Docker-为 Mosquitto 编写健康检查
Docker-compose health check for Mosquitto
我使用密码文件设置了 mosquitto 密码
volumes:
- /password:/mosquitto/config
如何在 docker-compose 中添加健康检查?我尝试了此处提供的以下解决方案
Script to check mosquitto is healthy
healthcheck:
test: ["CMD-SHELL", "timeout -t 5 mosquitto_sub -t '$$SYS/#' -C 1 | grep -v Error || exit 1"]
interval: 10s
timeout: 10s
retries: 6
此外,我尝试了其他几个选项,但他们要求我传递用户名和密码。我不能使用这个密码文件吗?
更新:
mosquitto.conf
allow_anonymous false
password_file /mosquitto/config/pwfile
port 1883
listener 9001
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
在推送时,您可以使用 MQTT over Websockets 作为协议启用侦听器,然后使用基本的 curl get 请求来检查代理是否已启动。
例如将此添加到 mosquitto.conf
listener 8080 127.0.0.1
protocol websockets
以及类似
的健康检查
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080" ]
interval: 10s
timeout: 10s
retries: 6
原始 HTTP GET 请求无需身份验证即可完成。
另一个选项是重新启用匿名用户并向匿名用户添加只读访问权限以使用 acl 文件访问 $SYS/#
主题模式 (acl_file)
我使用密码文件设置了 mosquitto 密码
volumes:
- /password:/mosquitto/config
如何在 docker-compose 中添加健康检查?我尝试了此处提供的以下解决方案 Script to check mosquitto is healthy
healthcheck:
test: ["CMD-SHELL", "timeout -t 5 mosquitto_sub -t '$$SYS/#' -C 1 | grep -v Error || exit 1"]
interval: 10s
timeout: 10s
retries: 6
此外,我尝试了其他几个选项,但他们要求我传递用户名和密码。我不能使用这个密码文件吗?
更新: mosquitto.conf
allow_anonymous false
password_file /mosquitto/config/pwfile
port 1883
listener 9001
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
在推送时,您可以使用 MQTT over Websockets 作为协议启用侦听器,然后使用基本的 curl get 请求来检查代理是否已启动。
例如将此添加到 mosquitto.conf
listener 8080 127.0.0.1
protocol websockets
以及类似
的健康检查healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080" ]
interval: 10s
timeout: 10s
retries: 6
原始 HTTP GET 请求无需身份验证即可完成。
另一个选项是重新启用匿名用户并向匿名用户添加只读访问权限以使用 acl 文件访问 $SYS/#
主题模式 (acl_file)