Merge pull request #730 from lvyelin/master

Add dockerfile to build docker image
pull/738/head
Leo Chen 6 years ago committed by GitHub
commit 97e5c9efa9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 20
      scripts/docker/Dockerfile
  2. 67
      scripts/docker/docker-node.sh
  3. 36
      scripts/docker/run
  4. 2
      scripts/go_executable_build.sh

@ -0,0 +1,20 @@
FROM alpine
RUN apk add --no-cache bash libstdc++ gmp-dev libc6-compat && ln -s libcrypto.so.1.1 /lib/libcrypto.so.10
# default base port, rpc port and rest port
EXPOSE 9000/tcp 14555/tcp 6000/tcp
VOLUME ["/harmony/db", "/harmony/log"]
# Default BN for cello
ENV BN_MA "/ip4/100.26.90.187/tcp/9874/p2p/Qmdfjtk6hPoyrH1zVD9PEH4zfWLo38dP2mDvvKXfh3tnEv,/ip4/54.213.43.194/tcp/9874/p2p/QmZJJx6AdaoEkGLrYG4JeLCKeCKDjnFz2wfHNHxAqFSGA9"
ENV NODE_PORT "9000"
ENV NODE_ACCOUNT_ID ""
ENTRYPOINT ["/bin/run"]
WORKDIR /harmony
COPY run /bin/run
COPY libbls384.so libmcl.so /lib/
COPY harmony /bin/

@ -0,0 +1,67 @@
#!/bin/bash
DOCKER_IMAGE=harmonyone/node:master
function usage()
{
echo "usage: $(basename $0) [-p base_port] account_id"
exit 1
}
if [ -z "$(which docker)" ]; then
echo "docker is not installed."
echo "Please check https://docs.docker.com/install/ to get docker installed."
exit 1
fi
port_base=
while getopts "p:" opt; do
case "$opt" in
p) port_base="$OPTARG";;
*) usage;;
esac
done
shift $(($OPTIND-1))
account_id=$1
if [ -z "$account_id" ]; then
echo "Please provide account id"
usage
fi
if [ -z "$port_base" ]; then
echo "Using default port: 9000"
port_base=9000
fi
if [ "$port_base" -lt 4000 ]; then
echo "port base cannot be less than 4000"
exit 1
fi
if [ "$port_base" -gt 59900 ]; then
echo "port base cannot be greater than 59900"
exit 1
fi
port_rest=$(( $port_base - 3000 ))
port_rpc=$(( $port_base + 5555 ))
# Pull latest image
docker pull $DOCKER_IMAGE
# Stop running container
docker rm -v -f harmony-$account_id-$port_base
docker run -it -d \
--name harmony-$account_id-$port_base \
-p $port_base:$port_base -p $port_rest:$port_rest -p $port_rpc:$port_rpc \
-e NODE_PORT=$port_base \
-e NODE_ACCOUNT_ID=$account_id \
--mount type=volume,source=data-$port_base,destination=/harmony/db \
--mount type=volume,source=log-$port_base,destination=/harmony/log \
$DOCKER_IMAGE
echo "Please run \`docker logs -f harmony-$account_id-$port_base\` to check console logs"
# vim: ai ts=2 sw=2 et sts=2 ft=sh

@ -0,0 +1,36 @@
#!/usr/bin/env bash
# https://www.linuxjournal.com/content/validating-ip-address-bash-script
function valid_ip()
{
local ip=$1
local stat=1
if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
OIFS=$IFS
IFS='.'
ip=($ip)
IFS=$OIFS
[[ ${ip[0]} -le 255 && ${ip[1]} -le 255 \
&& ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
stat=$?
fi
return $stat
}
PUB_IP=$(wget -qO- https://api.ipify.org)
if valid_ip $PUB_IP; then
echo "MYIP = $PUB_IP"
else
echo "NO valid public IP found: $PUB_IP"
exit 1
fi
if [ -z "$NODE_ACCOUNT_ID" ]; then
echo "No account id."
exit 2
fi
harmony -log_folder log -bootnodes $BN_MA -ip $PUB_IP -port $NODE_PORT -is_genesis -account_index $NODE_ACCOUNT_ID
# vim: ai ts=2 sw=2 et sts=2 ft=sh

@ -81,7 +81,7 @@ EOF
function build_only function build_only
{ {
VERSION=$(git rev-list --all --count) VERSION=$(git rev-list --count HEAD)
COMMIT=$(git describe --always --long --dirty) COMMIT=$(git describe --always --long --dirty)
BUILTAT=$(date +%FT%T%z) BUILTAT=$(date +%FT%T%z)
BUILTBY=${USER}@ BUILTBY=${USER}@

Loading…
Cancel
Save