mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-09 20:11:09 +00:00
Add docker image (#375)
* Add Dockerfile Add documentation Ref #375 * Add PORT, VOLUME and reduce size of the docker image significantly Fix doc and reduce image size Fix #375 * Fix docker compose
This commit is contained in:
@@ -12,4 +12,5 @@ substrate/pwasm-libc/Cargo.lock
|
||||
demo/runtime/wasm/target/
|
||||
**/._*
|
||||
.vscode
|
||||
polkadot.*
|
||||
polkadot.*
|
||||
.DS_Store
|
||||
|
||||
+91
-1
@@ -6,6 +6,7 @@
|
||||
|
||||
Implementation of a https://polkadot.network node in Rust.
|
||||
|
||||
|
||||
== To play
|
||||
|
||||
If you'd like to play with Polkadot, you'll need to install a client like this
|
||||
@@ -46,6 +47,7 @@ polkadot --dev
|
||||
|
||||
You can muck around by cloning and building the http://github.com/paritytech/polka-ui and http://github.com/paritytech/polkadot-ui or just heading to https://polkadot.js.org/apps.
|
||||
|
||||
|
||||
== Local Two-node Testnet
|
||||
|
||||
If you want to see the multi-node consensus algorithm in action locally, then
|
||||
@@ -62,6 +64,7 @@ polkadot --chain=local --validator --key Bob -d /tmp/bob --port 30334 --bootnode
|
||||
Ensure you replace `ALICE_BOOTNODE_ID_HERE` with the node ID from the output of
|
||||
the first terminal.
|
||||
|
||||
|
||||
== Hacking on Polkadot
|
||||
|
||||
If you'd actually like hack on Polkadot, you can just grab the source code and
|
||||
@@ -74,7 +77,7 @@ rustup update nightly
|
||||
rustup target add wasm32-unknown-unknown --toolchain nightly
|
||||
rustup update stable
|
||||
cargo install --git https://github.com/alexcrichton/wasm-gc
|
||||
sudo apt install cmake pkg-config libssl-dev
|
||||
sudo apt install cmake pkg-config libssl-dev git
|
||||
----
|
||||
|
||||
Then, grab the Polkadot source code:
|
||||
@@ -103,4 +106,91 @@ You can start a development chain with:
|
||||
[source, shell]
|
||||
cargo run -- --dev
|
||||
|
||||
|
||||
== Using Docker
|
||||
|
||||
=== The easiest way
|
||||
|
||||
The easiest/faster option is to use the latest image.
|
||||
|
||||
Let´s first check the version we have. The first time you run this command, the polkadot docker image will be downloaded. This takes a bit of time and bandwidth, be patient:
|
||||
|
||||
[source, shell]
|
||||
docker run --rm -it chevdor/polkadot:0.2.0 ./version
|
||||
|
||||
You can also pass any argument/flag that polkadot supports:
|
||||
|
||||
[source, shell]
|
||||
docker run --rm -it chevdor/polkadot:0.2.0 polkadot --name "PolkaDocker"
|
||||
|
||||
Once you are done experimenting and picking the best node name :) you can start polkadot as daemon, exposes the polkadot ports and mount a volume that will keep your blockchain data locally:
|
||||
|
||||
[source, shell]
|
||||
docker run -d -p 30333:30333 -p 9933:9933 -v /my/local/folder:/data chevdor/polkadot:0.2.0 polkadot
|
||||
|
||||
|
||||
=== Build your own image
|
||||
|
||||
To get up and running with the smallest footprint on your system, you may use the Polkadot Docker image.
|
||||
You can either build it yourself (it takes a while...):
|
||||
|
||||
[source, shell]
|
||||
----
|
||||
ccd docker
|
||||
./build.sh
|
||||
----
|
||||
|
||||
=== Reporting issues
|
||||
|
||||
If you run into issues with polkadot when using docker, please run the following command
|
||||
(replace the tag with the appropriate one if you do not use latest):
|
||||
|
||||
[source, shell]
|
||||
docker run --rm -it chevdor/polkadot:latest version
|
||||
|
||||
This will show you the polkadot version as well as the git commit ref that was used to build your container.
|
||||
Just paste that in the issue you create.
|
||||
|
||||
|
||||
== Shell completion
|
||||
|
||||
The Polkadot cli command supports shell auto-completion. For this to work, you will need to run the completion script matching you build and system.
|
||||
|
||||
Assuming you built a release version using `cargo build --release` and use `bash` run the following:
|
||||
|
||||
[source, shell]
|
||||
source target/release/completion-scripts/polkadot.bash
|
||||
|
||||
You can find completion scripts for:
|
||||
- bash
|
||||
- fish
|
||||
- zsh
|
||||
- elvish
|
||||
- powershell
|
||||
|
||||
To make this change persistent, you can proceed as follow:
|
||||
|
||||
=== First install
|
||||
|
||||
[source, shell]
|
||||
----
|
||||
COMPL_DIR=$HOME/.completion
|
||||
mkdir -p $COMPL_DIR
|
||||
cp -f target/release/completion-scripts/polkadot.bash $COMPL_DIR/
|
||||
echo "source $COMPL_DIR/polkadot.bash" >> $HOME/.bash_profile
|
||||
source $HOME/.bash_profile
|
||||
----
|
||||
|
||||
=== Update
|
||||
|
||||
When you build a new version of Polkadot, the following will ensure you auto-completion script matches the current binary:
|
||||
|
||||
[source, shell]
|
||||
----
|
||||
COMPL_DIR=$HOME/.completion
|
||||
mkdir -p $COMPL_DIR
|
||||
cp -f target/release/completion-scripts/polkadot.bash $COMPL_DIR/
|
||||
source $HOME/.bash_profile
|
||||
----
|
||||
|
||||
include::doc/packages.adoc[]
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
FROM phusion/baseimage:0.10.1
|
||||
LABEL maintainer "chevdor@gmail.com"
|
||||
|
||||
ARG PROFILE=release
|
||||
|
||||
RUN mkdir -p polkadot && \
|
||||
apt-get update && \
|
||||
apt-get upgrade -y && \
|
||||
apt-get install -y cmake pkg-config libssl-dev git && \
|
||||
apt-get clean && \
|
||||
mkdir -p /root/.local/share/Polkadot && \
|
||||
ln -s /root/.local/share/Polkadot /data
|
||||
|
||||
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y && \
|
||||
export PATH=$PATH:$HOME/.cargo/bin && \
|
||||
rustup update nightly && \
|
||||
rustup target add wasm32-unknown-unknown --toolchain nightly && \
|
||||
rustup update stable && \
|
||||
cargo install --git https://github.com/alexcrichton/wasm-gc && \
|
||||
git clone https://github.com/paritytech/polkadot.git && \
|
||||
cd polkadot && \
|
||||
./build.sh && \
|
||||
cargo build --$PROFILE && \
|
||||
mv target/$PROFILE/polkadot /usr/local/bin && \
|
||||
cargo clean && \
|
||||
rm -rf /root/.cargo /root/.rustup /tmp/*
|
||||
|
||||
COPY version /polkadot
|
||||
WORKDIR /polkadot
|
||||
EXPOSE 30333 9933
|
||||
VOLUME ["/data"]
|
||||
|
||||
CMD ["/bin/sh", "polkadot"]
|
||||
Executable
+18
@@ -0,0 +1,18 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
# Find the current version from Cargo.toml
|
||||
VERSION=`grep "^version" ../Cargo.toml | egrep -o "([0-9\.]+)"`
|
||||
GITUSER=chevdor
|
||||
GITREPO=polkadot
|
||||
|
||||
# Build the image
|
||||
echo "Building ${GITREPO}:$VERSION docker image, hang on!"
|
||||
time docker build --build-arg PROFILE=release -t ${GITUSER}/${GITREPO}:$VERSION .
|
||||
|
||||
# Show the list of available images for this repo
|
||||
echo "Image is ready"
|
||||
docker images | grep ${GITREPO}
|
||||
|
||||
echo -e "\nIf you just built the latest, you may want to update your tag:"
|
||||
echo " $ docker tag ${GITUSER}/${GITREPO}:$VERSION ${GITUSER}/${GITREPO}:latest"
|
||||
Executable
+8
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
# This script helps reduce the size of the built image
|
||||
# It removes data that is not required.
|
||||
|
||||
export PATH=$PATH:$HOME/.cargo/bin
|
||||
|
||||
cargo clean
|
||||
rm -rf /root/.cargo /root/.rustup /tmp/*
|
||||
@@ -0,0 +1,15 @@
|
||||
version: '3'
|
||||
services:
|
||||
polkadot:
|
||||
build:
|
||||
context: .
|
||||
ports:
|
||||
- "127.0.0.1:30333:30333/tcp"
|
||||
- "127.0.0.1:9933:9933/tcp"
|
||||
image: chevdor/polkadot:latest
|
||||
volumes:
|
||||
- "polkadot-data:/data"
|
||||
command: polkadot
|
||||
|
||||
volumes:
|
||||
polkadot-data:
|
||||
@@ -0,0 +1,16 @@
|
||||
|
||||
== Polkadot Docker
|
||||
|
||||
=== Start a Polkadot docker container
|
||||
|
||||
Run the following command
|
||||
|
||||
docker run -d chevdor/polkadot:latest polkadot
|
||||
|
||||
=== Building the image
|
||||
|
||||
To build your own image from the source, you can run the following command:
|
||||
|
||||
./build.sh
|
||||
|
||||
NOTE: Building the image takes a while. Count at least 30min on a good machine.
|
||||
Executable
+13
@@ -0,0 +1,13 @@
|
||||
#!/usr/bin/env bash
|
||||
# This script show the polkadot version and commit ref that was
|
||||
# used to build the image.
|
||||
# If you report an issue, call this script to get all details.
|
||||
# This script will no longer be required once the polkadot cli
|
||||
# can report its commit ref.
|
||||
|
||||
echo "-----------------------------------------"
|
||||
printf "Polkadot Docker Container: "
|
||||
polkadot --version
|
||||
printf " "
|
||||
git rev-parse HEAD
|
||||
echo "-----------------------------------------"
|
||||
Reference in New Issue
Block a user