github.com/hyperledger/burrow@v0.34.5-0.20220512172541-77f09336001d/Dockerfile (about) 1 # For solc binary 2 FROM ethereum/solc:0.5.15 as solc-builder 3 # We use a multistage build to avoid bloating our deployment image with build dependencies 4 FROM golang:1.16-alpine3.13 as builder 5 6 RUN apk add --no-cache --update git bash make musl-dev gcc libc6-compat 7 8 ARG REPO=/src/burrow 9 COPY . $REPO 10 WORKDIR $REPO 11 12 # Build purely static binaries 13 RUN make build 14 15 # This will be our base container image 16 FROM alpine:3.13 17 18 # Variable arguments to populate labels 19 ARG USER=burrow 20 ARG INSTALL_BASE=/usr/local/bin 21 22 # Fixed labels according to container label-schema 23 LABEL org.label-schema.schema-version="1.0" 24 LABEL org.label-schema.name = "Burrow" 25 LABEL org.label-schema.vendor="Hyperledger Burrow Authors" 26 LABEL org.label-schema.description="Hyperledger Burrow is a permissioned Ethereum smart-contract blockchain node." 27 LABEL org.label-schema.license="Apache-2.0" 28 LABEL org.label-schema.vcs-url="https://github.com/hyperledger/burrow" 29 30 # Run burrow as burrow user; not as root user 31 ENV BURROW_PATH /home/$USER 32 RUN addgroup -g 101 -S $USER && adduser -S -D -u 1000 $USER $USER 33 WORKDIR $BURROW_PATH 34 ADD --chown=$USER /testnet/ $BURROW_PATH 35 36 # Copy binaries built in previous stage 37 COPY --from=builder /src/burrow/bin/burrow $INSTALL_BASE/ 38 COPY --from=builder /src/burrow/bin/burrow-debug $INSTALL_BASE/ 39 COPY --from=solc-builder /usr/bin/solc $INSTALL_BASE/ 40 41 # Expose ports for 26656:peer; 26658:info; 10997:grpc 42 EXPOSE 26656 43 EXPOSE 26658 44 EXPOSE 10997 45 46 USER $USER:$USER 47 ENTRYPOINT [ "burrow" ] 48 CMD [ "start" ]