docker中的mqtt服务器—运行<;MOSQUITO_passwd-U>;来自DockerCompose.yaml
终于在Docker中运行了mqtt,但我想使用uid/pwd。通过以下方式实现了所有功能:docker中的mqtt服务器—运行<;MOSQUITO_passwd-U>;来自DockerCompose.yaml,docker,mqtt,Docker,Mqtt,终于在Docker中运行了mqtt,但我想使用uid/pwd。通过以下方式实现了所有功能: 首先,使用不要求passwd文件的mosquitcho.conf文件 从mqtt映像3通过DockerCompose.yaml启动mqtt服务。创造了, 然后使用docker exec-it containerid sh登录服务 然后,在服务中,我运行命令mosquitto_passwd-U passwdfile对文件中打开的密码进行加密 然后我停止docker服务的堆栈,更改mosquitto.conf
登录服务
mosquitto_passwd-U passwdfile
对文件中打开的密码进行加密李>
那么,他们是否可以在mqtt服务器预期之前在docker容器中运行encrypt命令?在启动
mosquitto
服务之前,可以使用ENTRYPOINT
脚本运行mosquitto\u passwd
。使用Dockerfile,如下所示:
FROM eclipse-mosquitto
COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT ["sh", "/entrypoint.sh"]
CMD ["/usr/sbin/mosquitto","-c","/mosquitto/config/mosquitto.conf"]
和一个entrypoint.sh
脚本,该脚本如下所示:
#!/bin/sh
PASSWDFILE=/etc/mosquitto/passwd
if [ -f $PASSWDFILE ]; then
echo "converting password file"
mosquitto_passwd -U $PASSWDFILE
fi
exec "$@"
当您从此映像启动容器时,它将在启动mosquitto
服务之前运行mosquitto\u passwd
此示例中存在一些问题:特别是,由于mosquito\u passwd
会就地修改文件,因此需要确保不尝试转换已转换的文件
希望这能为您提供一些关于如何构建更完整解决方案的想法。另一种方法是直接使用eclipse mosquitto docker容器创建文件,然后复制创建的文件。这很有用,尤其是当您只想为一个或两个用户创建密码文件时 启动docker容器,但覆盖入口点
docker run -it --entrypoint sh -v $(pwd):/pwd eclipse-mosquitto
这里我还使用了卷装载选项,将当前目录装载到位于/path
的容器中
这将启动一个shell
cd /path # if you've opted to do this
mosquitto_passwd -b -c passwd FreddaBlogs ABetterPassw0rdGoesHere
cat passwd
# cut'n'paste the output
ctrl-d
退出shell-文件将在本地目录中创建。由于这是由根用户在docker容器中创建的,因此您可能需要更改所有者权限等。另一种选择是在容器内部,即在容器外壳上运行蚊子路径。以下是对我有效的方法(请注意,我在容器外部保留了配置目录):
在config目录中创建您的mosquitto\u密码
文件
进入容器
(其中mosquitto
是mosquitto容器的名称)
导航到您的密码文件
运行mosquitto_passwd散列您的密码文件
如果你遇到这样的错误
Error: Unable to open password file /mosquitto/config/mosquitto_passwords. Permission denied.
您需要确保容器用户可以访问您的密码文件和配置目录。要了解正在使用的用户,请执行以下操作:
/mosquitto/config $ whoami
whoami: unknown uid 1000
所以在这种情况下你可以
$ sudo chown 1000 config
$ sudo chown 1000 config/mosquitto_passwords
此后,
/mosquitto/config $ mosquitto_passwd -U mosquitto_passwords
应该很好,你就完蛋了
退出容器
不要忘记将您的mosquitto.conf
指向您的新密码文件。非常感谢您提供了非常完整的答案。我从来没有真正了解入口点是如何使用的。
/mosquitto/config $ whoami
whoami: unknown uid 1000
$ sudo chown 1000 config
$ sudo chown 1000 config/mosquitto_passwords
/mosquitto/config $ mosquitto_passwd -U mosquitto_passwords
/mosquitto/config $ exit