# Создано: 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"]
