diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..7b749b21 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,58 @@ +FROM debian:8.9 +MAINTAINER Zjeraar + +ENV BOOST_BASENAME=boost_1_63_0 \ + BOOST_ROOT=/tmp/boost \ + BOOST_URL=http://sourceforge.net/projects/boost/files/boost/1.63.0/boost_1_63_0.tar.gz/download + +RUN \ + apt-get update && \ + apt-get install -yq apt-utils && \ + apt-get install -yq locales && \ + apt-get install -yq build-essential && \ + apt-get install -yq wget && \ + apt-get install -yq git && \ + apt-get install -yq cmake && \ + apt-get install -yq g++ && \ + apt-get install -yq curl && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \ + dpkg-reconfigure locales && \ + echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen && \ + locale-gen + +WORKDIR /tmp + +RUN \ + wget -O ${BOOST_BASENAME}.tar.gz ${BOOST_URL} && \ + tar xzvf ${BOOST_BASENAME}.tar.gz && \ + cd ${BOOST_BASENAME} && \ + ./bootstrap.sh && \ + ./b2 --prefix=${BOOST_ROOT} link=static install && \ + rm -rf ${BOOST_BASENAME} && \ + rm -f ${BOOST_BASENAME}.tar.gz && \ + cd .. && \ + mkdir app + +ADD ./ /tmp/app + +RUN \ + cd app && \ + git submodule update --init --recursive && \ + cmake -DBOOST_ROOT=${BOOST_ROOT} -G "Unix Makefiles" && \ + make rai_node && \ + cp rai_node /usr/local/bin/rai_node && \ + ln -s /usr/local/bin/rai_node /usr/bin/rai_node && \ + cd .. && \ + rm -rf app && \ + rm -rf ${BOOST_ROOT} + +ADD ./docker_init.sh /usr/local/bin/rai_node_init.sh + +RUN chmod +x /usr/local/bin/rai_node_init.sh + +WORKDIR /root + +EXPOSE 7075 7076 + +ENTRYPOINT ["/bin/bash", "/usr/local/bin/rai_node_init.sh"] diff --git a/docker_init.sh b/docker_init.sh new file mode 100644 index 00000000..cecfc41e --- /dev/null +++ b/docker_init.sh @@ -0,0 +1,23 @@ +#!/bin/bash +set -e + +DATA_DIRECTORY="/root/RaiBlocks" + +# check if data directory exist +if [[ ! $(ls -A "$DATA_DIRECTORY" 2> /dev/null) ]]; then + # this command is going to fail, but needed to initiate the data directory + /usr/local/bin/rai_node --daemon 2> /dev/null || + + echo "please ignore any errors above this line..." + + # replace RPC address in config.json for docker + sed -i "s/\"address\": \"::1\"/\"address\": \"::ffff:0.0.0.0\"/g" "$DATA_DIRECTORY"/config.json +fi + +if [[ $1 ]]; then + echo "executing command $1..." + exec $1 +else + echo "running rai_node --daemon..." + exec /usr/local/bin/rai_node --daemon +fi