mirror of
https://github.com/tendermint/tendermint.git
synced 2026-01-05 04:55:18 +00:00
* Ensure Dockerfile stages use consistent Go version (#9462)
I noticed the tendermint image was running on Go 1.15. I assume that was just a missed search and replace when updating to go1.18.
Pull the go base image into a build arg so that the image is only defined once, and used consistently across all stages of the build.
#### PR checklist
- [x] Tests written/updated, or no tests needed
- [x] `CHANGELOG_PENDING.md` updated, or no changelog entry needed
- [x] Updated relevant documentation (`docs/`) and code comments, or no
documentation updates needed
(cherry picked from commit 84bc77cb1f)
# Conflicts:
# CHANGELOG_PENDING.md
* Resolve conflict in CHANGELOG_PENDING
Signed-off-by: Thane Thomson <connect@thanethomson.com>
Signed-off-by: Thane Thomson <connect@thanethomson.com>
Co-authored-by: Mark Rushakoff <mark.rushakoff@gmail.com>
Co-authored-by: Thane Thomson <connect@thanethomson.com>
61 lines
1.9 KiB
Docker
61 lines
1.9 KiB
Docker
# Use a build arg to ensure that both stages use the same,
|
|
# hopefully current, go version.
|
|
ARG GOLANG_BASE_IMAGE=golang:1.18-alpine
|
|
|
|
# stage 1 Generate Tendermint Binary
|
|
FROM --platform=$BUILDPLATFORM $GOLANG_BASE_IMAGE as builder
|
|
RUN apk update && \
|
|
apk upgrade && \
|
|
apk --no-cache add make
|
|
COPY / /tendermint
|
|
WORKDIR /tendermint
|
|
RUN TARGETPLATFORM=$TARGETPLATFORM make build-linux
|
|
|
|
# stage 2
|
|
FROM $GOLANG_BASE_IMAGE
|
|
LABEL maintainer="hello@tendermint.com"
|
|
|
|
# Tendermint will be looking for the genesis file in /tendermint/config/genesis.json
|
|
# (unless you change `genesis_file` in config.toml). You can put your config.toml and
|
|
# private validator file into /tendermint/config.
|
|
#
|
|
# The /tendermint/data dir is used by tendermint to store state.
|
|
ENV TMHOME /tendermint
|
|
|
|
# OS environment setup
|
|
# Set user right away for determinism, create directory for persistence and give our user ownership
|
|
# jq and curl used for extracting `pub_key` from private validator while
|
|
# deploying tendermint with Kubernetes. It is nice to have bash so the users
|
|
# could execute bash commands.
|
|
RUN apk update && \
|
|
apk upgrade && \
|
|
apk --no-cache add curl jq bash && \
|
|
addgroup tmuser && \
|
|
adduser -S -G tmuser tmuser -h "$TMHOME"
|
|
|
|
# Run the container with tmuser by default. (UID=100, GID=1000)
|
|
USER tmuser
|
|
|
|
WORKDIR $TMHOME
|
|
|
|
# p2p, rpc and prometheus port
|
|
EXPOSE 26656 26657 26660
|
|
|
|
STOPSIGNAL SIGTERM
|
|
|
|
COPY --from=builder /tendermint/build/tendermint /usr/bin/tendermint
|
|
|
|
# You can overwrite these before the first run to influence
|
|
# config.json and genesis.json. Additionally, you can override
|
|
# CMD to add parameters to `tendermint node`.
|
|
ENV PROXY_APP=kvstore MONIKER=dockernode CHAIN_ID=dockerchain
|
|
|
|
COPY ./DOCKER/docker-entrypoint.sh /usr/local/bin/
|
|
|
|
ENTRYPOINT ["docker-entrypoint.sh"]
|
|
CMD ["node"]
|
|
|
|
# Expose the data directory as a volume since there's mutable state in there
|
|
VOLUME [ "$TMHOME" ]
|
|
|