【问题标题】:Container is unreachable from up services when using docker-compose run使用 docker-compose run 时,无法从 up 服务访问容器
【发布时间】:2018-12-14 09:27:25
【问题描述】:

我有一个 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 在烧瓶应用程序中调试某些东西,然后我手动运行它而不是使用:

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

【问题讨论】:

  • 你使用的是什么版本的 docker compose?
  • @Siyu 添加了版本信息。
  • 链接字段已弃用,请勿使用。为什么要在端口字段中指定 ip?删除它并重试
  • @ChristianSauer 在绑定端口时使用127.0.0.1 是一种安全的良好做法,不会导致任何问题。

标签: python docker flask docker-compose


【解决方案1】:

问题是当你手动运行时,容器名不再是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来获得交互提示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-10
    • 2020-06-30
    • 2020-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多