pm2的app.json(src / app.py是Flask app):
{
"apps": [
{
"exec_mode": "fork",
"script": "src/app.py",
"args": ["-p", "8080"]
},
{
"exec_mode": "fork",
"script": "src/app.py",
"args": ["-p", "8081"]
}
]
}
~
Dockerfile:
EXPOSE 8080 8081
CMD ["pm2", "start", "app.json"]
运行docker时出错:
docker run -p 8080:8080 -p 8080:8081 oct20
docker: Error response from daemon: driver failed programming external connectivity on endpoint high_fermi (xxxxxxxxxxx): Bind for 0.0.0.0:8080 failed: port is already allocated.
有什么想法吗?感谢
答案 0 :(得分:4)
你不能在主机的一个端口上监听两件事 - 无论它们是一个容器中的独立端口,还是两个Docker容器,还是两个其他应用程序。这不是Docker的限制,它是OS网络堆栈的一部分。
如果您可以在这种情况下执行此操作,主机会向端口8080发送请求?要在容器或端口8081中端口8080,还是将它组播到两者?