FROM golang:1.26.0-alpine AS builder WORKDIR /app # Устанавливаем зависимости для компиляции RUN apk add --no-cache gcc musl-dev git ca-certificates tzdata # Копируем go.mod и go.sum COPY go.mod go.sum ./ RUN go mod tidy # Копируем исходный код COPY . . # Компилируем БЕЗ CGO (указываем путь к main.go) RUN CGO_ENABLED=0 GOOS=linux go build -o /app/bin/api_yal ./cmd/main.go # Финальный образ FROM golang:1.26.0-alpine AS runner WORKDIR /app # Устанавливаем зависимости для runtime RUN apk add --no-cache ca-certificates tzdata curl # Создаем непривилегированного пользователя RUN addgroup -g 1001 -S api && \ adduser -u 1001 -S api -G api # Копируем бинарник из builder COPY --from=builder /app/bin/api_yal /app/api_yal # УДАЛИЛИ СТРОКУ копирования configs или добавим проверку # Копируем конфигурационные файлы, если они существуют # COPY --from=builder /app/configs /app/configs || true # Настраиваем права доступа RUN chown -R api:api /app # Переключаемся на непривилегированного пользователя USER api # Открываем порт EXPOSE 8787 # Команда для запуска CMD ["/app/api_yal"]