# --- ЭТАП 1: Сборка --- FROM golang:1.25-alpine AS builder # Устанавливаем рабочую директорию WORKDIR /app # Копируем файлы зависимостей # Это делается отдельно, чтобы Docker кэшировал слои с модулями COPY go.mod go.sum ./ RUN go mod download # Копируем исходный код COPY . . # Собираем бинарный файл # CGO_ENABLED=0 нужен для статической линковки (чтобы работало в пустом образе) # GOOS=linux гарантирует сборку под Linux RUN CGO_ENABLED=0 GOOS=linux go build -o /app/server main.go # --- ЭТАП 2: Запуск --- FROM alpine:latest # Устанавливаем часовой пояс и корневые сертификаты (важно для HTTPS запросов) RUN apk --no-cache add ca-certificates tzdata WORKDIR /app # Копируем только скомпилированный файл из предыдущего этапа COPY --from=builder /app/server . COPY --from=builder /app/bin/ipatool . # Открываем порт (тот же, что в коде Huma) EXPOSE 8888 # Запускаем приложение CMD ["./server"]