# We need to build in a Linux environment to support C libraries, e.g. RocksDB. # We use Debian instead of Alpine, so that we can use binary database packages # instead of spending time compiling them. FROM golang:1.17 RUN apt-get -qq update -y && apt-get -qq upgrade -y >/dev/null RUN apt-get -qq install -y libleveldb-dev librocksdb-dev >/dev/null # Set up build directory /src/tendermint ENV TENDERMINT_BUILD_OPTIONS badgerdb,boltdb,cleveldb,rocksdb WORKDIR /src/tendermint # Fetch dependencies separately (for layer caching) COPY go.mod go.sum ./ RUN go mod download # Build Tendermint and install into /usr/bin/tendermint COPY . . RUN make build && cp build/tendermint /usr/bin/tendermint COPY test/e2e/docker/entrypoint* /usr/bin/ RUN cd test/e2e && make node && cp build/node /usr/bin/app # Set up runtime directory. We don't use a separate runtime image since we need # e.g. leveldb and rocksdb which are already installed in the build image. WORKDIR /tendermint VOLUME /tendermint ENV TMHOME=/tendermint EXPOSE 26656 26657 26660 6060 ENTRYPOINT ["/usr/bin/entrypoint"] CMD ["start"] STOPSIGNAL SIGTERM