Pycharm Docker端口映射

9

我正在 Docker 容器内运行一个 Flask 应用程序,因此需要绑定主机和容器端口(在本例中两者都是端口 5000)。

运行以下命令:

docker run -v //c/Users/Nicholas/PycharmProjects/flask_tutorial:/opt/project -e "FLASK_APP=/opt/project/flaskr.py" -p 0.0.0.0:5000:5000 flask flask run --host=0.0.0.0

创建容器后,我可以在本地浏览器中通过127.0.0.1:5000访问应用程序。但是,当我把这些同样的设置输入到Pycharm(2016.2.3)运行配置GUI中并启动容器后,我无法访问该应用程序(我尝试了勾选“发布所有端口”选项,但无济于事):

pycharm docker run configuration

使用docker inspect container_id命令查看通过命令行创建的容器,我得到了NetworkSettings下的以下设置:

"Ports": {
    "5000/tcp": [
        {
            "HostIp": "0.0.0.0",
            "HostPort": "5000"
        }
    ]
},

然而,使用Pycharm创建的运行配置容器似乎没有传递端口绑定:
"Ports": {},

有没有办法检查Pycharm传递给Docker的选项?或者让它正确地传递端口绑定选项?

我在Windows 10上运行,Docker在Hyper-V上运行(而非VirtualBox)。


2
我也遇到了这个问题...很不幸...但我想现在我需要暂时不要通过PyCharm运行它...看起来它似乎没有发布端口。 - Joran Beasley
3个回答

3

我曾经遇到过Django应用程序的类似问题。以下是我的解决方法:

首先,您需要在Docker容器中设置项目解释器:

  1. 进入设置(CTRL+ALT+s)
  2. 搜索 project interpreter
  3. 点击右上角的小齿轮图标,
  4. 点击添加按钮
  5. 在菜单中选择 Docker,
  6. 然后在选择列表中选择之前构建的映像文件
  7. 最后点击 ok 按钮。

现在您需要创建一个适当的运行配置。

  1. 按下 ALT+u
  2. 再按下 ALT+r
  3. 然后按下 ALT+inser 键,
  4. 选择 Flask server.
  5. 您将看到一个文本区域,其中标有 "Docker container settings" 标签,请单击此文本区域
  6. 然后按下 SHIFT+enter 键。

您将获得一个菜单,允许您配置多个Docker运行参数,包括端口绑定。


1
哇,这太棒了。希望有一天这篇文章能获得大量的赞! - Joshua Schlichting
这个对你有效吗?我在使用PyCharm 2019.3.3,但它忽略了第(5)步和第(6)步的端口绑定。 - w00dy

2

对我来说,在应用程序对象的运行调用中添加本地主机IP('0.0.0.0')作为参数解决了这个问题。

app.run(host='0.0.0.0')

1
我遇到了类似的问题。对我来说,在“编辑运行配置”菜单中更改docker容器设置起作用了。如果您点击小文件夹,则可以添加端口和卷映射。
也许对于大多数人来说这很琐碎,或者在文档中非常清晰,但我花了一些时间才找到它,所以我在这里添加这个信息,以防还有更多的人正在寻找端口卷映射。 enter image description here

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接