# syntax=docker/dockerfile:1 FROM golang:1.27-alpine AS build WORKDIR /src COPY go.mod go.sum ./ RUN go mod download COPY cmd ./cmd COPY internal ./internal ARG VERSION=dev RUN CGO_ENABLED=0 GOOS=linux go build -trimpath \ -ldflags="-s -w -X main.version=${VERSION}" \ -o /out/traefik-selectel-dns ./cmd/traefik-selectel-dns # static: CA-сертификаты (для HTTPS к Selectel) + пользователь nonroot (uid 65532), без shell. # Для воспроизводимости закрепите образ по digest. FROM gcr.io/distroless/static-debian12:nonroot COPY --from=build /out/traefik-selectel-dns /traefik-selectel-dns USER 65532:65532 EXPOSE 9090 HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \ CMD ["/traefik-selectel-dns", "-healthcheck"] ENTRYPOINT ["/traefik-selectel-dns"] CMD ["-config", "/etc/traefik-selectel-dns/config.yaml"]