mukan-consensus/test/e2e/docker/Dockerfile
Mukan Erkin Törük ef24c0b67e
Some checks are pending
docker-build-cometbft / vars (push) Waiting to run
docker-build-cometbft / build-images (amd64, ubuntu-24.04) (push) Blocked by required conditions
docker-build-cometbft / build-images (arm64, ubuntu-24.04-arm) (push) Blocked by required conditions
docker-build-cometbft / merge-images (push) Blocked by required conditions
docker-build-e2e-node / vars (push) Waiting to run
docker-build-e2e-node / build-images (amd64, ubuntu-24.04) (push) Blocked by required conditions
docker-build-e2e-node / build-images (arm64, ubuntu-24.04-arm) (push) Blocked by required conditions
docker-build-e2e-node / merge-images (push) Blocked by required conditions
initial: sovereign Mukan Network fork
2026-05-11 03:18:27 +03:00

56 lines
1.9 KiB
Docker

# Multi-stage build Dockerfile for CometBFT end-to-end testing
# Stage 1: Build environment - compiles the application and test node
FROM cometbft/cometbft-db-testing:v0.14.2 AS build
WORKDIR /src/cometbft
# Copy Go module files and download dependencies
# This is done before copying the rest of the code to leverage Docker's build cache
COPY go.mod go.sum ./
RUN go mod download
# Copy the entire codebase into the container
COPY . .
# Set build options to include specific features and databases
ENV COMETBFT_BUILD_OPTIONS=badgerdb,boltdb,cleveldb,rocksdb
RUN make build
RUN cd test/e2e && make node
# Stage 2: Final image - minimal runtime environment
FROM debian:bookworm-slim AS runtime
# Update system packages and install network utilities
RUN apt-get -qq update -y && apt-get -qq upgrade -y >/dev/null
RUN apt-get -qq install -y iputils-ping iproute2 >/dev/null
RUN apt install libsnappy-dev libgflags-dev libleveldb-dev -y >/dev/null
WORKDIR /cometbft
VOLUME /cometbft
ENV CMTHOME=/cometbft
# Configure Go race detector to halt on error
ENV GORACE="halt_on_error=1"
# Copy RocksDB shared libraries from the build stage
COPY --from=build /usr/local/lib/librocksdb.so* /lib/
# Copy executables from the build stage
# - entrypoint script for container initialization
# - cometbft binary for the blockchain node
# - app binary for the test application
COPY --from=build /src/cometbft/test/e2e/docker/entrypoint* /usr/bin/
COPY --from=build /src/cometbft/build/cometbft /usr/bin/cometbft
COPY --from=build /src/cometbft/test/e2e/build/node /usr/bin/app
# Expose ports:
# - 26656: P2P communication between nodes
# - 26657: RPC server for API requests
# - 26660: ABCI server for application communication
# - 6060: Prometheus metrics endpoint
EXPOSE 26656 26657 26660 6060
# Set the entrypoint script to initialize the container
ENTRYPOINT ["/usr/bin/entrypoint"]
# Default command to run when container starts (can be overridden)
CMD ["node"]