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. Выберите тот, который лучше всего соответствует вашим потребностям.