feat: add dockerfile

This commit is contained in:
Jack Merrill 2023-08-19 17:39:35 -05:00
parent f14f426ae6
commit b4dde94e86
No known key found for this signature in database
GPG Key ID: B8E3CDF57DD80CA5
2 changed files with 50 additions and 0 deletions

1
.dockerignore Normal file
View File

@ -0,0 +1 @@
.env

49
Dockerfile Normal file
View File

@ -0,0 +1,49 @@
##### Stage 1 #####
### Use golang:1.18 as base image for building the application
FROM golang:1.19 as builder
### 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
FROM scratch
### 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 .
### Copy the certs from builder
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
### Run the binary application
CMD ["/app/main"]