hampbot/Dockerfile

51 lines
1.2 KiB
Docker
Raw Permalink Normal View History

2023-08-19 15:39:35 -07:00
##### Stage 1 #####
### Use golang:1.18 as base image for building the application
2024-08-30 15:37:26 -07:00
FROM golang:1.23 as builder
2023-08-19 15:39:35 -07:00
### Create new directly and set it as working directory
RUN mkdir -p /app
WORKDIR /app
### Copy Go application dependency files
COPY go.mod .
COPY go.sum .
### Setting a proxy for downloading modules
ENV GOPROXY https://proxy.golang.org,direct
### Download Go application module dependencies
RUN go mod download
### Copy actual source code for building the application
COPY . .
### CGO has to be disabled cross platform builds
### Otherwise the application won't be able to start
ENV CGO_ENABLED=0
### Build the Go app for a linux OS
### 'scratch' and 'alpine' both are Linux distributions
RUN GOOS=linux go build ./main.go
##### Stage 2 #####
### Define the running image
2023-08-19 15:49:57 -07:00
FROM scratch as runner
2023-08-19 15:39:35 -07:00
### Alternatively to 'FROM scratch', use 'alpine':
# FROM alpine:3.13.1
### Set working directory
WORKDIR /app
### Copy built binary application from 'builder' image
COPY --from=builder /app/main .
2024-01-16 20:20:43 -08:00
COPY --from=builder /app/verify.html .
2023-08-19 15:39:35 -07:00
### Copy the certs from builder
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
### Run the binary application
CMD ["/app/main"]