我有一个docker-compose配置,如下所示:
version: '3.7'
services:
flask:
command: [python, app.py]
ports:
- "127.0.0.1:5000:5000"
frontend:
command: [sh, -c, "npm run start"]
ports:
- "127.0.0.1:7600:7600"
links:
- flask
frontend
容器运行着一个Webpack开发服务器,该服务器将/api/*
的路径请求代理到flask:5000
进行处理。当我使用docker-compose up -d
时,这非常有用。
但是,假设我想使用pdb
在flask应用程序中调试某些内容,而是使用以下命令手动运行它:
docker-compose stop flask
docker-compose run --rm --service-ports flask python app.py
然后突然,我的frontend
服务无法将请求代理到我的flask
服务,并且出现类似Error occurred while trying to proxy request /testing from frontend:7600 to http://flask:5000 (ECONNREFUSED) (https://nodejs.org/api/errors.html#errors_common_system_errors)
的错误
我想念什么?如何使此配置适用于python代码的交互式调试?
编辑:我正在运行Docker version 18.09.0, build 4d60db4
和docker-compose version 1.23.2, build 1110ad01
答案 0 :(得分:0)
问题是当您手动运行时,容器名称不再是flask
,您可以使用docker network inspect your_network
看到它。
您需要首先docker-compose rm flask
释放名称flask
,然后释放docker-compose run --service-ports --name flask flask
。
最后,我不知道您如何使用pdb
,但是您通常可以使用docker-compose exec flask sh
或docker attach container_id
来获得交互式提示。