# Изменено: 2026-03-07
# Multi-stage build для sless оператора.
# Stage 1: сборка бинаря (golang:1.23-alpine)
# Stage 2: минимальный образ (alpine:3.19, не distroless — нужен ca-certificates для S3/HTTPS)
FROM golang:1.25-alpine AS builder
ARG TARGETOS
ARG TARGETARCH

WORKDIR /workspace
COPY go.mod go.mod
COPY go.sum go.sum
RUN go mod download

# Копируем весь исходный код (включая internal/ — там основная логика)
COPY main.go main.go
COPY api/ api/
COPY controllers/ controllers/
COPY internal/ internal/
COPY migrations/ migrations/

RUN CGO_ENABLED=0 GOOS=${TARGETOS:-linux} GOARCH=${TARGETARCH} go build -a -o manager main.go

FROM alpine:3.19
# ca-certificates нужны для TLS (S3 HTTPS, DockerHub)
RUN apk add --no-cache ca-certificates
WORKDIR /
COPY --from=builder /workspace/manager .
# migrations нужны при старте — оператор читает SQL файлы для инициализации БД
COPY migrations/ migrations/
# Запускаем от непривилегированного пользователя
USER 65532:65532

ENTRYPOINT ["/manager"]
