Методы написания Dockerfile для приложений Go с примерами кода

Dockerfile Go переводится на английский как «Dockerfile for Go». Ниже приведены несколько методов написания Dockerfile специально для приложения Go, а также примеры кода:

Метод 1: базовый файл Docker Go

# Start with a base image
FROM golang:latest
# Set the working directory inside the container
WORKDIR /app
# Copy the Go module files
COPY go.mod go.sum ./
# Download and install the Go dependencies
RUN go mod download
# Copy the rest of the application source code
COPY . .
# Build the Go application
RUN go build -o myapp
# Expose the necessary port
EXPOSE 8080
# Define the command to run the application
CMD ["./myapp"]

Метод 2: многоэтапная сборка с помощью Go Dockerfile

# Stage 1: Build the Go binary
FROM golang:latest AS build
WORKDIR /app
COPY . .
RUN go mod download
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o myapp .
# Stage 2: Create a minimal image to run the binary
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=build /app/myapp .
CMD ["./myapp"]

Метод 3. Оптимизированный Docker-файл Go с использованием BuildKit и кэширования

# syntax = docker/dockerfile:experimental
# Build stage
FROM golang:latest AS build
WORKDIR /app
COPY . .
RUN --mount=type=cache,target=/go/pkg/mod go mod download
RUN --mount=type=cache,target=/root/.cache/go-build CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o myapp .
# Final stage
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=build /app/myapp .
CMD ["./myapp"]

Эти методы предоставляют разные подходы к созданию образов Docker для приложений Go. Выберите тот, который лучше всего соответствует вашим потребностям.