【问题标题】:How to remotelly debug a flask app executed with gunicorn inside a docker container, with VSCode如何使用 VSCode 远程调试在 docker 容器内使用 gunicorn 执行的烧瓶应用程序
【发布时间】:2022-07-07 20:17:19
【问题描述】:

所以这一定很常见,但我找不到干净利落的解决方案。

我有一个在容器内运行的烧瓶应用程序。容器使用 docker compose 运行。我的 docker-compose 中的以下命令启动应用程序:

api:
  image: "project/app:latest"
  restart: on-failure:3
  volumes:
    - ./:/usr/src/app
  depends_on:
    - redis
    - mongo-db
  tty: true
  stdin_open: true
  command: bin/gunicorn -a my_wsgi:app -s 0.0.0.0:4000 -p gevent -w 2 -c 2 -- --reload
  ports:
    - 5000:5000

我希望在我的主机上使用 VSCode 远程调试这个应用程序。我已经在我的 VSCode 中安装了远程容器扩展。现在我找不到如何在容器中运行调试器并将其连接到主机中的 VSCode。

【问题讨论】:

    标签: python linux flask visual-studio-code gunicorn


    【解决方案1】:

    所以看起来这对于gunicorn来说是非常困难的,如果不是不可能的话。所以我做的是

    1. 在我的项目中创建一个degub_app.py 文件:
    from myapp.api import create_app
    
    
    if __name__=="__main__":
        app = create_app()
        app.run('0.0.0.0', 8000, debug=False)
    
    1. 我在我的docker-compose 文件中创建了一个调试容器,它在启动时什么都不运行,只是像这样等待空闲:
     api-debug:
            image: "myapp:latest"
            restart: on-failure:3
            environment:
            volumes:
              - ./:/usr/src/app
            depends_on:
              - rabbitmq
              - redis
              - mongo
            tty: true
            stdin_open: true
            command: tail -F anything
            ports:
              - 8000:8000
    
    1. 然后使用VSCode 和我附加到该容器的Remote Container 插件。这会启动一个新的 VSCode 窗口并显示容器内的文件。

    注意由于 VSCode 现在已连接到容器,因此我必须重新安装 Python 扩展(您可以查看此内容,但很容易只需转到插件并重新安装到容器)

    1. 我在容器内创建了一个launch.json 来运行我上面提到的degub_app.py,如下所示:

    { “版本”:“0.2.0”, “配置”:[ { "name": "Python:调试 API", “类型”:“蟒蛇”, “请求”:“启动”, "程序": "${workspaceFolder}my_path/debug_api.py", “控制台”:“集成终端”, “justMyCode”:假 } ] }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-23
      • 1970-01-01
      • 2012-11-19
      • 2021-02-04
      • 2020-10-20
      • 2021-12-12
      • 2017-10-18
      • 1970-01-01
      相关资源
      最近更新 更多