29 lines
		
	
	
	
		
			940 B
		
	
	
	
		
			Docker
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
	
		
			940 B
		
	
	
	
		
			Docker
		
	
	
	
	
	
# Use buildx for multi-architecture support
 | 
						|
FROM --platform=${BUILDPLATFORM} golang:1.24 AS builder
 | 
						|
 | 
						|
WORKDIR /app
 | 
						|
 | 
						|
# Copy go.mod and go.sum files to download dependencies
 | 
						|
COPY go.mod go.sum ./
 | 
						|
RUN go mod download
 | 
						|
 | 
						|
# Copy the source code into the container
 | 
						|
COPY . .
 | 
						|
 | 
						|
# Build the application for the specified target architecture
 | 
						|
# https://www.docker.com/blog/faster-multi-platform-builds-dockerfile-cross-compilation-guide/
 | 
						|
# Declare TARGETOS and TARGETARCH in the local scope so they can be used in the build stage.
 | 
						|
ARG TARGETOS TARGETARCH
 | 
						|
RUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -o opendtu-logger .
 | 
						|
 | 
						|
# Create a minimal runtime image
 | 
						|
FROM --platform=${TARGETPLATFORM} scratch
 | 
						|
 | 
						|
WORKDIR /app
 | 
						|
 | 
						|
# Copy the executable from the builder stage
 | 
						|
COPY --from=builder /app/opendtu-logger /app/opendtu-logger
 | 
						|
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
 | 
						|
 | 
						|
# Run the application
 | 
						|
CMD ["./opendtu-logger"]
 |