@ -0,0 +1,41 @@ | |||||
# Pull base image. | |||||
FROM golang:1.4.2-wheezy | |||||
ENV user tendermint | |||||
ENV data_root /data/tendermint | |||||
# set user right away for determinism | |||||
RUN groupadd -r $user \ | |||||
&& useradd -r -s /bin/false -g $user $user | |||||
# create directory for persistence and give our user ownership | |||||
RUN mkdir -p $data_root \ | |||||
&& chown -R $user:$user $data_root | |||||
# Set the env variables to non-interactive | |||||
ENV DEBIAN_FRONTEND noninteractive | |||||
ENV DEBIAN_PRIORITY critical | |||||
ENV DEBCONF_NOWARNINGS yes | |||||
ENV TERM linux | |||||
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections | |||||
# grab deps (gmp) | |||||
RUN apt-get update && \ | |||||
apt-get install -y --no-install-recommends \ | |||||
libgmp3-dev && \ | |||||
rm -rf /var/lib/apt/lists/* | |||||
# set the repo and install tendermint | |||||
ENV repo /go/src/github.com/tendermint/tendermint | |||||
ADD . $repo | |||||
WORKDIR $repo | |||||
RUN make | |||||
# persist data, set user | |||||
VOLUME $data_root | |||||
USER tendermint | |||||
ENV TMROOT $data_root | |||||
# run tendermint | |||||
CMD ["./run.sh"] | |||||
@ -0,0 +1,31 @@ | |||||
# Persistence | |||||
It's good practice to use a data-only container, alongside the main application. | |||||
The `docker.sh` script sets it all up for you, and provides the | |||||
same functionality as `-v host_dir:image_dir` but by copying the data rather than | |||||
mounting it. | |||||
# To Play | |||||
Get quickly caught up with the testnet: `FAST_SYNC=true ./DOCKER/docker.sh` | |||||
Use a pre-existing `~/.tendermint`: `VC=~/.tendermint NO_BUILD=true ./docker.sh` | |||||
This is like doing `-v ~/.tendermint:/data/tendermint`, but better. | |||||
Use `NO_BUILD` to avoid waiting if the image is already built. If you don't use | |||||
`NO_BUILD`, you should be in `tendermint/tendermint`, and using `./DOCKER/docker.sh` | |||||
Rerunning `docker.sh` will require you to delete the old containers: | |||||
`docker rm mint mintdata` | |||||
However, if you remove the `mintdata` container, you delete the data (the blockchain). | |||||
If you don't use the `VC` option, your key will be deleted too | |||||
To avoid deleting and recreating the data container, use | |||||
`VD=true NO_BUILD=true ./docker.sh` | |||||
Of course, once running, you can just control the main container with `docker stop mint` and `docker start mint` |
@ -0,0 +1,20 @@ | |||||
#! /bin/bash | |||||
# don't build if you're impatient | |||||
if [[ ! $NO_BUILD ]]; then | |||||
docker build -t mint . | |||||
fi | |||||
# create the data-only container | |||||
if [[ ! $VD ]]; then | |||||
docker run --name mintdata --entrypoint /bin/echo mint Data-only container for mint | |||||
fi | |||||
# copy a directory from host to data-only volume | |||||
if [[ $VC ]]; then | |||||
cd $VC | |||||
tar cf - . | docker run -i --volumes-from mintdata mint tar xvf - -C /data/tendermint | |||||
fi | |||||
# run tendermint | |||||
docker run --name mint --volumes-from mintdata -d -p 46656:46656 -p 46657:46657 -e FAST_SYNC=$FAST_SYNC mint |
@ -0,0 +1,12 @@ | |||||
#! /bin/bash | |||||
if [[ $BARAK_SEED ]]; then | |||||
cat ./cmd/barak/$BARAK_SEED | ./build/barak & | |||||
fi | |||||
if [[ $FAST_SYNC ]]; then | |||||
./build/tendermint node --fast_sync | |||||
else | |||||
./build/tendermint node | |||||
fi | |||||
@ -1,32 +0,0 @@ | |||||
# Pull base image. | |||||
FROM golang:1.4.2-wheezy | |||||
# Set the env variables to non-interactive | |||||
ENV DEBIAN_FRONTEND noninteractive | |||||
ENV DEBIAN_PRIORITY critical | |||||
ENV DEBCONF_NOWARNINGS yes | |||||
ENV TERM linux | |||||
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections | |||||
RUN apt-get update && \ | |||||
apt-get install -y --no-install-recommends \ | |||||
libgmp3-dev && \ | |||||
rm -rf /var/lib/apt/lists/* | |||||
# Install go | |||||
# ADD tendermint user | |||||
RUN useradd tendermint | |||||
# Get rid of tendermint user login shell | |||||
RUN usermod -s /sbin/nologin tendermint | |||||
ADD . /go/src/github.com/tendermint/tendermint | |||||
WORKDIR /go/src/github.com/tendermint/tendermint | |||||
RUN make | |||||
# Set environment variables | |||||
USER tendermint | |||||
ENV USER tendermint | |||||
ENV TMROOT /tendermint_root | |||||
# docker run -v $(pwd)/tendermint_root:/tendermint_root | |||||
CMD [ "./build/tendermint", "node" ] |