python - docker:无法将两个容器端口映射到一个主机端口

标签 python docker flask dockerfile pm2

pm2的app.json(src / app.py是Flask应用):

{
    "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.

有任何想法吗?谢谢

最佳答案

您无法在主机上的一个端口上监听两件事–无论它们是一个容器中的单独端口,还是两个Docker容器中的端口,还是两个其他应用程序中的端口。这不是Docker的限制,它是OS网络堆栈的一部分。

在这种情况下,主机可以在哪里将请求发送到端口8080?要在容器中使用端口8080,还是使用端口8081,或将其多播到两者?

关于python - docker:无法将两个容器端口映射到一个主机端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40159158/

相关文章:

Node.js 生成进程在 Docker 容器内不工作

docker - Windows兼容性:权限?

python - 为什么验证不适用于表单请求?

java - 使用 Fernet 在 Java 上进行对称加密

python - Python 中的 Wufoo API 在特定时间后按日期时间排序不起作用

python - 避免嵌套 for 循环

javascript - 错误 405 : Method Not allowed flask, ajax

python - 如何计算文本中词频的最佳 zipf 分布

bash - 剪切/格式化docker服务命令

Python flask 暴露给外部可见