使用Docker Composer运行和配置MQTT代理



在Docker Composer版本3的文档中,从我所理解的内容开始,在容器启动后运行一些命令,我需要添加"命令"标签,如下所示:

version: "3"
services:
    broker:
         image: "toke/mosquitto"
         restart: always
         ports:
             - "1883:1883"
             - "9001:9001"
         command: ["cd /etc/mosquitto", "echo "" > mosquitto.pwd", "mosquitto_passwd -b /etc/mosquitto/mosquitto.pwd user pass", "echo "password_file mosquitto.pwd" >> mosquitto.conf", "echo "allow_anonymous false" >> mosquitto.conf"]

日志返回/usr/bin/docker-entrypoint.sh: 5: exec: cd /etc/mosquitto: not found

可以在Composer文件中指定一个解决方法,然后添加应该在此处运行的命令,因此我创建了一个Dockerfile:

FROM toke/mosquitto
WORKDIR .
EXPOSE 1883:1883 9001:9001
ENTRYPOINT cd /etc/mosquitto
ENTRYPOINT echo "" > mosquitto.pwd
ENTRYPOINT mosquitto_passwd -b mosquitto.pwd usertest passwordtest
ENTRYPOINT echo "password_file mosquitto.pwd" >> mosquitto.conf
ENTRYPOINT echo "allow_anonymous false" >> mosquitto.conf

容器的继续重新启动,日志不会返回任何内容。我还尝试更改" CMD"的"入口点",而输出没有更改。作为指定Docker Composer文件以使用特定Dockerfile的加额,它无法解析,并说:

ERROR: The Compose file '.docker-compose.yml' is invalid because:
Unsupported config option for services.broker: 'dockerfile'

无法解析或不理解" Dockerfile"标签。有人知道如何配置Dockerfile甚至Docker-Composer以运行本文中要配置MQTT经纪的命令?

组合文件中的 command条目不是要运行的命令列表,它是一个命令,它的参数

例如。运行mosquitto -c /etc/mosquitto/mosquitto.conf

command: ["mosquitto", "-c", "/etc/mosquitto/mosquitto.conf"]

至于Dockerfile,只有一个ENTRYPOINTCMD。如果要运行多个命令,则应创建一个shell脚本以运行它们,将其添加到容器中,然后使用ENTRYPOINTCMD运行脚本。

最新更新