6

假设我有以下docker-compose.yml文件并行运行两个不同的 python 应用程序(例如通过烧瓶):

app1:
  command: python app.py
  build: app1/

app2:
  command: python app.py
  build: app2/
  links:
    - app1

app2链接到,app1因为我想从app1其中获取特定数据。现在我的问题是我想调试这个链接的某个场景。我可以轻松调试app1app2作为独立容器(通过docker-compose run --service-ports ... python app.py并放置pdb在代码中的某个位置)。我的问题是当我想调试app1以防请求来自app2. 如果我以 开头app1docker-compose runapp2无法解析链接。随着更多应用程序/服务根据它们的链接相互“交谈”,这个问题变得更加严重。

有没有好的方法来处理这个?一般而言,您如何处理链接容器的调试问题(不一定是 python 特定的)?感谢您的输入。

4

1 回答 1

5

如果您在同一台机器上进行本地开发,那么您可以将 a 添加net: 'host'到您的配置中,该配置执行以下操作:

告诉 Docker 跳过将容器放置在单独的网络堆栈中。本质上,这个选择告诉 Docker 不要容器化容器的网络!

有关更多信息,请参阅文档

app1:
  command: python app.py
  build: app1/
  net: 'host'

app2:
  command: python app.py
  build: app2/
  net: 'host'

此外,出于调试目的,您应该在守护程序模式下启动 app1 并在前台模式下启动 app2:

docker-compose up -d app1
docker-compose run app2

一旦您收到从 app1 到 app2 的请求,您将下拉到 app2 中的 (pdb)

于 2015-12-16T21:25:18.170 回答