使用docker-compose run时,容器无法通过启动服务访问

时间:2018-12-14 09:27:26

标签: python docker flask docker-compose

我有一个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 4d60db4docker-compose version 1.23.2, build 1110ad01

1 个答案:

答案 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 shdocker attach container_id来获得交互式提示。