Отладка Python3 в AWS EC2 Cloud9 в Docker-контейнере - PullRequest
0 голосов
/ 14 октября 2019

Я настроил среду Cloud9 с использованием экземпляра T2.micro, и я хочу иметь возможность отлаживать код Python, однако мой случай использования немного уникален. Я хочу использовать Docker-контейнер, который развертывается в качестве основы для выполнения моего кода Python, очень похожего на функцию отладки Docker InteliJ для Python, однако в итоге я получаю сообщение об ошибке: Could not connect debugger to the debugger proxy. У меня есть следующая конфигурация в моем файле запуска Python3:

{
  "script": [
    "if [ \"$debug\" == true ]; then ",
    "    docker run --rm --expose 15471 -p 15471:15471 -v /home/ubuntu/environment/:/project_directory little-test:latest sh -c \"python3 -m ikp3db -ik_p=15471 test.py \"",
    //original"    python3 -m ikp3db -ik_p=15471 -ik_cwd=$project_path \"$file\" $args",
    "else",
    "    docker run --rm -v /home/ubuntu/environment/:/project_directory little-test:latest sh -c \"python3 test.py\"",
    "fi",
    "checkExitCode() {",
    "    if [ $1 ] && [ \"$debug\" == true ]; then ",
    "        python3 -m ikp3db 2>&1 | grep -q 'No module' && echo '",
    "    To use python debugger install ikpdb by running: ",
    "        sudo yum update;",
    "        sudo yum install python36-devel;",
    "        sudo pip-3.6 install ikp3db;",
    "        '",
    "    fi",
    "   return $1",
    "}",
    "checkExitCode $?"
  ],
  "python_version": "python3",
  "working_dir": "$project_path",
  "debugport": 15471,
  "$debugDefaultState": false,
  "debugger": "ikpdb",
  "selector": "^.*\\.(py)$",
  "env": {
    "PYTHONPATH": "$python_path"
  },
  "trackId": "Python3"
}

Однако, запустив скрипт с этим, я получаю красное всплывающее окно в верхней части Cloud9 IDE, которое говорит: Could not connect debugger to the debugger proxy. Я подумал, что, возможно, я неправильно настроил некоторые параметры порта, поэтому я проверил sudo lsof -i -P -n для оригинального и измененного соответствующих битов:

оригинал

python3   19833          ubuntu    3u  IPv4 201049      0t0  TCP 127.0.0.1:15471 (LISTEN)
python3   19833          ubuntu    4u  IPv4 201050      0t0  TCP 127.0.0.1:15471->127.0.0.1:33800 (ESTABLISHED)

изменено

docker-pr 7805            root    4u  IPv4 154992      0t0  TCP 127.0.0.1:15471 (LISTEN)

Кажется, единственное отличие - это пользователь, которому он принадлежит. Любые предложения будут ценны!

1 Ответ

1 голос
/ 15 октября 2019

Попробуйте добавить параметр -ik_a=0.0.0.0 для ikp3db, работающего в контейнере. Если он будет прикреплен только к адресу обратной петли в контейнере (что является поведением по умолчанию), он не должен быть доступен извне, независимо от опубликованных портов.

...