Files
sless/Dockerfile
“Naeel” 3fdf342115 feat: deploy operator in-cluster v0.1.1
- Dockerfile: fix golang 1.23→1.25, add internal/ + migrations/ to image
- deployments/k8s/operator.yaml: ConfigMap + Secret + Deployment + Service + Ingress
- Ingress: sless-api.kube5s.ru, TLS via cert-manager letsencrypt-prod
- naeel/sless-operator:v0.1.1 — running in namespace sless
- E2E: https://sless-api.kube5s.ru → HTTP/2 200
2026-03-07 16:30:14 +04:00

34 lines
1.2 KiB
Docker

# Изменено: 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"]