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:
Chevdor
2018-07-27 16:32:12 +02:00
committed by Gav Wood
parent e5900d8f17
commit 97a6db785e
8 changed files with 196 additions and 2 deletions
+33
View File
@@ -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"]
+18
View File
@@ -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"
+8
View File
@@ -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/*
+15
View File
@@ -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:
+16
View File
@@ -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.
+13
View File
@@ -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 "-----------------------------------------"