Files
home_automatization/services/device-control-service/Dockerfile
T
cacto 3eb84aae6c Реализация device-control-service: gRPC + MQTT + Device Shadow в Redis
Добавлен gRPC-контракт proto/device_control (TurnOn/TurnOff/SetLevel),
общий Go-модуль proto/ для переиспользования сгенерированного кода.
device-control-service принимает команды по gRPC, обновляет desired_state
в Redis и публикует их в MQTT; слушает devices/+/telemetry и devices/+/ack
для отметки живости устройства и обновления reported_state; горутина
health-check переводит устройство в offline по таймауту и публикует
событие в RabbitMQ (device.status_changed) для будущего notification-service.

Проверено сквозным тестом через docker compose: grpcurl TurnOn/SetLevel
меняет desired_state и уходит в MQTT, mosquitto_pub с ack обновляет
reported_state и статус, health-check автоматически переводит устройство
в offline по истечении таймаута.
2026-07-26 18:40:36 +05:00

16 lines
643 B
Docker

# Build context is the repo root (not this directory) — device-control-service
# depends on the sibling proto/ Go module via a relative `replace` directive.
FROM golang:1.25-alpine AS build
WORKDIR /src
COPY proto/ ./proto/
COPY services/device-control-service/ ./services/device-control-service/
WORKDIR /src/services/device-control-service
RUN go mod download
RUN CGO_ENABLED=0 go build -o /out/device-control-service ./cmd/device-control-service
FROM alpine:3.20
RUN adduser -D -u 10001 app
COPY --from=build /out/device-control-service /usr/local/bin/device-control-service
USER app
ENTRYPOINT ["/usr/local/bin/device-control-service"]