This adds support for building statically-linked executables using ci.go. Static linking is enabled by default in Docker builds, making it possible to use the geth executable in any Docker image, regardless of the Linux distribution the Dockerfile is based on. Co-authored-by: Felix Lange <fjl@twurst.com>
		
			
				
	
	
		
			34 lines
		
	
	
		
			897 B
		
	
	
	
		
			Docker
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			897 B
		
	
	
	
		
			Docker
		
	
	
	
	
	
| # Support setting various labels on the final image
 | |
| ARG COMMIT=""
 | |
| ARG VERSION=""
 | |
| ARG BUILDNUM=""
 | |
| 
 | |
| # Build Geth in a stock Go builder container
 | |
| FROM golang:1.18-alpine as builder
 | |
| 
 | |
| RUN apk add --no-cache gcc musl-dev linux-headers git
 | |
| 
 | |
| # Get dependencies - will also be cached if we won't change go.mod/go.sum
 | |
| COPY go.mod /go-ethereum/
 | |
| COPY go.sum /go-ethereum/
 | |
| RUN cd /go-ethereum && go mod download
 | |
| 
 | |
| ADD . /go-ethereum
 | |
| RUN cd /go-ethereum && go run build/ci.go install -static ./cmd/geth
 | |
| 
 | |
| # Pull Geth into a second stage deploy alpine container
 | |
| FROM alpine:latest
 | |
| 
 | |
| RUN apk add --no-cache ca-certificates
 | |
| COPY --from=builder /go-ethereum/build/bin/geth /usr/local/bin/
 | |
| 
 | |
| EXPOSE 8545 8546 30303 30303/udp
 | |
| ENTRYPOINT ["geth"]
 | |
| 
 | |
| # Add some metadata labels to help programatic image consumption
 | |
| ARG COMMIT=""
 | |
| ARG VERSION=""
 | |
| ARG BUILDNUM=""
 | |
| 
 | |
| LABEL commit="$COMMIT" version="$VERSION" buildnum="$BUILDNUM"
 |