Привязки портов Pycharm Docker

Я запускаю приложение flask в контейнере Docker, поэтому мне нужно связать порт хоста и контейнера (в данном случае порт 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) запустите графический интерфейс конфигурации и запустите контейнер, я не могу получить доступ к приложению (я безрезультатно пытался установить флажок «Опубликовать все порты»):

конфигурация запуска докера pycharm

Используя 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)


person Nicholas    schedule 23.10.2016    source источник
comment
У меня также есть эта проблема... к сожалению... но я думаю, мне пока не нужно запускать ее через pycharm... кажется, она не публикует порты   -  person Joran Beasley    schedule 11.02.2017


Ответы (2)


У меня была аналогичная проблема с приложением Django. Вот как я это решил:

Сначала вам нужно настроить интерпретатор проекта в контейнере докеров:

  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.

У вас будет меню, позволяющее настроить несколько параметров запуска докера, включая переключение портов.

person Louis Saglio    schedule 21.03.2019
comment
Вау, это было золото. Пусть этот пост когда-нибудь наберет массу голосов! - person Joshua Schlichting; 01.06.2019
comment
Это сработало для вас? Я использую PyCharm 2019.3.3, и он игнорирует привязки портов из шагов (5) и (6). - person w00dy; 25.02.2020

Для меня добавление IP-адреса локального хоста («0.0.0.0») в качестве аргумента в вызове запуска объекта приложения решило это.

app.run(host='0.0.0.0')
person gCoh    schedule 06.06.2018