python – 使用docker-compose时调试链接的docker容器

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

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

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

app2链接到app1,因为我想从app1中获取特定数据.现在我的问题是我想要调试此链接的某个场景.我可以轻松调试app1和app2作为独立容器(通过docker-compose run –service-ports … python app.py并将pdb放在代码中的某处).我的问题是当我想调试app1以防请求来自app2.如果我使用docker-compose run启动app1,则app2无法解析链接.随着更多应用/服务根据链接相互“交谈”,这个问题变得更加严重.

有没有一个好方法来处理这个?你如何处理链接容器的调试问题(不一定是python的特定)?感谢您的投入.

最佳答案
如果您在同一台机器上进行本地开发,那么您可以在配置中添加一个net:’host’,它执行以下操作:

Tells Docker to skip placing the container inside of a separate network stack. In essence, this choice tells Docker to not containerize the container’s networking!

有关详细信息,请参阅the documentation

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)

转载注明原文:python – 使用docker-compose时调试链接的docker容器 - 代码日志