【问题标题】:AWS EC2 Cloud9 debugging Python3 in Docker ContainerAWS EC2 Cloud9 在 Docker 容器中调试 Python3
【发布时间】:2019-10-14 20:35:21
【问题描述】:

我已经使用 T2.micro 实例设置了 Cloud9 环境,并且我希望能够调试 python 代码,但是我的用例有点独特。我想使用部署为基础的 docker 容器来执行我的 Python 代码,这与 InteliJ 的 Python docker 调试功能非常相似,但是我最终遇到了一个错误: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)

唯一的区别似乎是它所属的用户。任何建议将不胜感激!

【问题讨论】:

    标签: python-3.x docker aws-cloud9


    【解决方案1】:

    尝试为容器内运行的 ikp3db 添加-ik_a=0.0.0.0 参数。如果它只附加在容器中的环回地址上(这是默认行为),则它不应该从外部访问,与发布的端口无关。

    【讨论】:

      猜你喜欢
      • 2020-01-13
      • 2020-09-07
      • 1970-01-01
      • 2018-01-23
      • 2020-07-05
      • 2021-10-30
      • 2016-01-04
      • 2015-05-01
      • 1970-01-01
      相关资源
      最近更新 更多