# Создано: 2026-04-12 # Dockerfile для IoT managed service. # Multi-stage build: 3 бинарника (iot-operator, mqtt-bridge, kafka-consumer). # Образ: naeel/iot-operator (Docker Hub). FROM golang:1.25 AS builder WORKDIR /workspace # Кэширование зависимостей COPY go.mod go.sum ./ RUN go mod download # Исходный код COPY api/ api/ COPY controllers/ controllers/ COPY cmd/ cmd/ COPY internal/ internal/ # iot-operator — controller-manager + REST API RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o iot-operator ./cmd/iot-operator/ # mqtt-bridge — MQTT (EMQX) → Kafka RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o mqtt-bridge ./cmd/mqtt-bridge/ # kafka-consumer — Kafka → Postgres RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o kafka-consumer ./cmd/kafka-consumer/ # --- Runtime --- FROM gcr.io/distroless/static:nonroot WORKDIR / # Все три бинарника в одном образе. # Какой запускать — определяется command в k8s Deployment. COPY --from=builder /workspace/iot-operator . COPY --from=builder /workspace/mqtt-bridge . COPY --from=builder /workspace/kafka-consumer . USER 65532:65532 ENTRYPOINT ["/iot-operator"]