【发布时间】:2019-08-10 10:24:40
【问题描述】:
我有一个包含许多组件的系统,其中一个是 docker 容器。 我想用 Pm2 管理所有这些组件。
我可以使用 Pm2 运行 Node.js 脚本,但在 Ubuntu 18.04.2 LTS 上启动 docker 容器时遇到问题。
我有一个脚本“start.sh”,它已经以正确的方式启动了 docker 容器。
脚本是:
docker run -d -it -p 21083:21083 -p 9001:9001 -v /home/myhome/mqtt_broker/conf/mosquitto.conf:/mosquitto/config/mosquitto.conf -v /home/myhome/mqtt_broker/authentication/auth.txt:/mosquitto/auth.txt -v /home/myhome/mqtt_broker/acl/aclfile.txt:/mosquitto/aclfile.txt eclipse-mosquitto
我正在尝试以这种方式使用 PM2 启动此脚本:
pm2 start /home/myhome/mqtt_broker/startBroker.sh --name=BrokerMqtt
启动此命令后,我可以看到:
- 'docker ps' 表示容器已启动,
- pm2 进程列表中的 BrokerMqtt 状态为“错误”,
-
在 pm2 的日志中,我可以看到许多这样的错误:
码头工人:
来自守护程序的错误响应:驱动程序在端点 jolly_meninsky 上编程外部连接失败 (fefe45df2d338d89a4f8232873779e41bcaa1b846a463bc035d59c5ae09b26e0):绑定 0.0.0.0:21083 失败:端口已分配。
为什么脚本start.sh(如果单独启动就可以)在 Pm2 中失败?
【问题讨论】:
-
你能发布 dockerfile 吗?从官方 docker 镜像看来,该进程已经作为入口点启动了,所以当您尝试使用 pm2 重新启动时,端口已经被占用。
标签: docker ubuntu-18.04 pm2