|
FROM golang:1.7.4
|
|
|
|
# This is the release of tendermint to pull in.
|
|
ENV TM_VERSION 0.8.0
|
|
|
|
# Tendermint will be looking for genesis file in /tendermint (unless you change
|
|
# `genesis_file` in config.toml). You can put your config.toml and private
|
|
# validator file into /tendermint.
|
|
#
|
|
# The /tendermint/data dir is used by tendermint to store state.
|
|
ENV DATA_ROOT /tendermint
|
|
ENV TMROOT $DATA_ROOT
|
|
|
|
# Set user right away for determinism
|
|
RUN groupadd -r tmuser && \
|
|
useradd -r -s /bin/false -g tmuser tmuser
|
|
|
|
# Create directory for persistence and give our user ownership
|
|
RUN mkdir -p $DATA_ROOT && \
|
|
chown -R tmuser:tmuser $DATA_ROOT
|
|
|
|
# TODO replace with downloading a binary (this will allow us to replace golang
|
|
# base container with alpine|jessie - 600MB vs 50MB)
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends \
|
|
git && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
RUN mkdir -p $GOPATH/src/github.com/tendermint/tendermint && \
|
|
cd $GOPATH/src/github.com/tendermint/tendermint && \
|
|
git clone https://github.com/tendermint/tendermint.git . && \
|
|
git fetch && \
|
|
git reset --hard v$TM_VERSION && \
|
|
make install
|
|
|
|
# Expose the data directory as a volume since there's mutable state in there
|
|
VOLUME $DATA_ROOT
|
|
|
|
EXPOSE 46656
|
|
EXPOSE 46657
|
|
|
|
ENTRYPOINT ["tendermint"]
|
|
|
|
# By default you'll get the dummy app
|
|
CMD ["node", "--moniker=`hostname`", "--proxy_app=dummy"]
|