在使用docker-compose时debugging链接的docker容器

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

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

app2链接到app1因为我想从app1获取特定的数据。 现在我的问题是我想debugging这个链接的某个场景。 我可以很容易地debuggingapp1app2作为独立的容器(通过docker-compose run --service-ports ... python app.py并将pdb放置在代码中的某处)。 我的问题是,当我想debuggingapp1的情况下,请求来自app2 。 如果我用docker-compose run启动app1 ,那么app2无法parsing链接。 随着越来越多的应用程序/服务根据链接彼此“交谈”,这个问题变得更加棘手。

有没有一个好办法来处理这个问题? 一般来说,如何处理链接容器的debugging问题(不一定是python specifc)? 感谢您的input。

如果你在同一台机器上进行本地开发,那么你可以在你的configuration中添加一个net: 'host'来执行以下操作:

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

欲了解更多信息,请参阅文档

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

另外,您应该启动app1守护进程模式和app2前台模式进行debugging:

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

只要你从app1到app2的请求,你会下降到(pdb)在app2