diff --git a/emqx/Dockerfile b/emqx/Dockerfile index 4fe76af..212d926 100644 --- a/emqx/Dockerfile +++ b/emqx/Dockerfile @@ -1,31 +1,14 @@ -# EMQX для IoT на платформе Nubes (контейнер «Простой HTTP»). +# EMQX для IoT на платформе Nubes. # Образ: naeel/iot-emqx (Docker Hub, публичный). # -# ⚠️ Сборка от чистого debian: платформа берёт порт приложения из EXPOSE образа, -# а в базовом emqx/emqx:5.5.1 зашито 7 EXPOSE-портов (1883/4370/5369/8083/8084/ -# 8883/18083), которые невозможно убрать из дочернего Dockerfile. Поэтому здесь -# ОДИН EXPOSE 8083 — иначе deck-UI требует несуществующее поле applicationUsePort. +# БАЗА — официальный emqx/emqx:5.5.1 (проверен на платформе: заводится, логи в +# stdout). Добавляем только наш emqx.conf (auth/ACL, listeners, логи). +# ⚠️ У образа 7 EXPOSE-портов (наследие базы) — deck-UI при СОЗДАНИИ требует +# один порт; в НАШЕМ кластере используется kubectl set image, вопрос одного +# EXPOSE для чужого кластера — отдельная задача (тикет Nubes). -FROM debian:bookworm-slim +FROM emqx/emqx:5.5.1 -RUN apt-get update \ - && apt-get install -y --no-install-recommends ca-certificates curl procps \ - && curl -fsSL -o /tmp/emqx.deb \ - https://github.com/emqx/emqx/releases/download/v5.5.1/emqx-5.5.1-debian12-amd64.deb \ - && (dpkg -i /tmp/emqx.deb || apt-get -f install -y) \ - && rm -f /tmp/emqx.deb \ - && apt-get purge -y curl \ - && apt-get autoremove -y \ - && rm -rf /var/lib/apt/lists/* - -COPY emqx.conf /etc/emqx/emqx.conf - -# data_dir из emqx.conf: /opt/emqx/data. Launcher работает от пользователя -# emqx (deb-пакет создаёт его) — каталог должен принадлежать emqx. -RUN mkdir -p /opt/emqx/data \ - && chown -R emqx:emqx /opt/emqx/data +COPY emqx.conf /opt/emqx/etc/emqx.conf EXPOSE 8083 - -ENTRYPOINT ["/usr/bin/emqx"] -CMD ["foreground"] diff --git a/emqx/Makefile b/emqx/Makefile index a6ba9b7..bac94f8 100644 --- a/emqx/Makefile +++ b/emqx/Makefile @@ -1,6 +1,6 @@ # EMQX-контейнер для IoT (образ naeel/iot-emqx). -VERSION ?= v0.1.4 +VERSION ?= v0.2.0 IMAGE ?= naeel/iot-emqx .PHONY: docker-build docker-push diff --git a/emqx/emqx.conf b/emqx/emqx.conf index a05e6c3..44d6950 100644 --- a/emqx/emqx.conf +++ b/emqx/emqx.conf @@ -16,7 +16,7 @@ authentication = [ backend = http enable = true method = post - url = "http://iot-service:9090/internal/mqtt/auth" + url = "http://containerk8s.f1ffb134-7d16-45bd-8bef-69f6ec8ab33c.svc.cluster.local:4100/internal/mqtt/auth" body { username = "${username}" password = "${password}" @@ -46,7 +46,7 @@ authorization { type = http enable = true method = post - url = "http://iot-service:9090/internal/mqtt/acl" + url = "http://containerk8s.f1ffb134-7d16-45bd-8bef-69f6ec8ab33c.svc.cluster.local:4100/internal/mqtt/acl" body { username = "${username}" clientid = "${clientid}" @@ -69,6 +69,18 @@ mqtt { retain_available = false } +## Логи: console (stdout) — видны через kubectl logs платформы. +## Файловый handler отключён (у USER emqx нет прав на /var/log/emqx при deb). +log { + console_handler { + enable = true + level = warning + } + file_handlers.default { + enable = false + } +} + ## Listeners: WebSocket — единственный порт контейнера платформы (8083). ## TCP 1883 остаётся для диагностики (не экспонируется платформой). listeners.tcp.default {