From 93af91f561cd0abff2bf1441611316917d6405f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Sun, 16 Aug 2026 13:22:39 +0400 Subject: [PATCH] =?UTF-8?q?fix(emqx):=20v0.1.1=20=E2=80=94=20=D1=81=D0=B1?= =?UTF-8?q?=D0=BE=D1=80=D0=BA=D0=B0=20=D0=BE=D1=82=20debian,=20=D0=B5?= =?UTF-8?q?=D0=B4=D0=B8=D0=BD=D1=81=D1=82=D0=B2=D0=B5=D0=BD=D0=BD=D1=8B?= =?UTF-8?q?=D0=B9=20EXPOSE=208083=20(deck-UI=20=D0=B1=D0=B5=D1=80=D1=91?= =?UTF-8?q?=D1=82=20=D0=BF=D0=BE=D1=80=D1=82=20=D0=B8=D0=B7=20=D0=BE=D0=B1?= =?UTF-8?q?=D1=80=D0=B0=D0=B7=D0=B0,=20=D0=BF=D0=BE=D0=BB=D0=B5=20applicat?= =?UTF-8?q?ionUsePort=20=D0=B2=20=D1=84=D0=BE=D1=80=D0=BC=D0=B5=20=D0=BE?= =?UTF-8?q?=D1=82=D1=81=D1=83=D1=82=D1=81=D1=82=D0=B2=D1=83=D0=B5=D1=82)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- emqx/Dockerfile | 33 +++++++++++++++++++++------------ emqx/Makefile | 2 +- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/emqx/Dockerfile b/emqx/Dockerfile index 248fb8f..7429987 100644 --- a/emqx/Dockerfile +++ b/emqx/Dockerfile @@ -1,19 +1,28 @@ # EMQX для IoT на платформе Nubes (контейнер «Простой HTTP»). # Образ: naeel/iot-emqx (Docker Hub, публичный). -# Единственный экспонируемый порт — 8083 (MQTT over WebSocket). -# Auth/ACL URL монолита задаются env (см. HISTORY раздел 16). +# +# ⚠️ Сборка от чистого debian: платформа берёт порт приложения из EXPOSE образа, +# а в базовом emqx/emqx:5.5.1 зашито 7 EXPOSE-портов (1883/4370/5369/8083/8084/ +# 8883/18083), которые невозможно убрать из дочернего Dockerfile. Поэтому здесь +# ОДИН EXPOSE 8083 — иначе deck-UI требует несуществующее поле applicationUsePort. -FROM emqx/emqx:5.5.1 +FROM debian:bookworm-slim -COPY emqx.conf /opt/emqx/etc/emqx.conf +RUN apt-get update \ + && apt-get install -y --no-install-recommends ca-certificates curl \ + && 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/* -# Заглушки auth/ACL URL — реальный адрес монолита задаётся env в deck-UI -# или kubectl set env после создания обоих контейнеров. -ENV EMQX_AUTHENTICATION__1__URL=http://iot-service:9090/internal/mqtt/auth \ - EMQX_AUTHORIZATION__SOURCES__1__URL=http://iot-service:9090/internal/mqtt/acl +COPY emqx.conf /etc/emqx/emqx.conf + +RUN mkdir -p /opt/emqx/data -# Единственный порт приложения — 8083 (MQTT over WebSocket). -# ⚠️ В deck-UI обязательно указать applicationUsePort=8083: базовый образ -# emqx/emqx:5.5.1 экспонирует ещё 1883/4370/5369/8084/8883/18083, и платформа -# требует явного указания порта приложения. EXPOSE 8083 + +ENTRYPOINT ["/usr/bin/emqx"] +CMD ["foreground"] diff --git a/emqx/Makefile b/emqx/Makefile index e029ec7..8177837 100644 --- a/emqx/Makefile +++ b/emqx/Makefile @@ -1,6 +1,6 @@ # EMQX-контейнер для IoT (образ naeel/iot-emqx). -VERSION ?= v0.1.0 +VERSION ?= v0.1.1 IMAGE ?= naeel/iot-emqx .PHONY: docker-build docker-push