fix(emqx): образ с одним EXPOSE (scratch) + конфиг без salt_rounds — платформа требует ровно один порт
This commit is contained in:
+20
-6
@@ -1,14 +1,28 @@
|
||||
# EMQX для IoT на платформе Nubes.
|
||||
# Образ: gitea.services.ngcloud.ru/nail/iot-emqx (Gitea registry платформы).
|
||||
#
|
||||
# БАЗА — официальный emqx/emqx:5.5.1 (проверен на платформе: заводится, логи в
|
||||
# stdout). Добавляем только наш emqx.conf (auth/ACL, listeners, логи).
|
||||
# ⚠️ У образа 7 EXPOSE-портов (наследие базы) — deck-UI при СОЗДАНИИ требует
|
||||
# один порт; в НАШЕМ кластере используется kubectl set image, вопрос одного
|
||||
# EXPOSE для чужого кластера — отдельная задача (тикет Nubes).
|
||||
# ⚠️ ВАЖНО: платформа Nubes требует РОВНО ОДИН EXPOSE у образа (иначе create падает
|
||||
# с «Не указан applicationUsePort, а expose в Dockerfile содержит несколько портов»).
|
||||
# База emqx/emqx:5.5.1 имеет 7 EXPOSE (18083/1883/4370/5369/8083/8084/8883), а EXPOSE
|
||||
# не удаляется из наследуемого образа. Поэтому копируем rootfs базового образа в чистый
|
||||
# (EXPOSE НЕ переносится) и выставляем единственный порт 8083.
|
||||
#
|
||||
# БАЗА — официальный emqx/emqx:5.5.1. Добавляем только наш emqx.conf (auth/ACL, listeners, логи).
|
||||
|
||||
FROM emqx/emqx:5.5.1
|
||||
FROM emqx/emqx:5.5.1 AS base
|
||||
|
||||
FROM scratch
|
||||
COPY --from=base / /
|
||||
|
||||
ENV LANG=C.UTF-8
|
||||
ENV LC_ALL=C.UTF-8
|
||||
ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
||||
|
||||
COPY emqx.conf /opt/emqx/etc/emqx.conf
|
||||
|
||||
EXPOSE 8083
|
||||
|
||||
USER emqx
|
||||
WORKDIR /opt/emqx
|
||||
ENTRYPOINT ["/usr/bin/docker-entrypoint.sh"]
|
||||
CMD ["/opt/emqx/bin/emqx", "foreground"]
|
||||
|
||||
+5
-1
@@ -41,7 +41,11 @@ authentication = [
|
||||
}
|
||||
password_hash_algorithm {
|
||||
name = bcrypt
|
||||
salt_rounds = 10
|
||||
## ⚠ salt_rounds НЕ поддерживается схемой 5.5.1 (проверено на образе
|
||||
## emqx/emqx:5.5.1: «unknown_fields, unknown => "salt_rounds"» и
|
||||
## call_hocon_failed). Оставлять его нельзя — контейнер не стартует.
|
||||
## Роль поля нулевая: EMQX только СВЕРЯЕТ хеш из БД, а cost берётся из
|
||||
## самого bcrypt-хеша, не из конфига.
|
||||
}
|
||||
query = "SELECT mqtt_password AS password_hash FROM iot_devices WHERE enabled = true AND (namespace || '_' || device_id = ${username} OR (namespace = '__bridge' AND ${username} = device_id)) LIMIT 1"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user