在使用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这个链接的某个场景。 我可以很容易地debuggingapp1
和app2
作为独立的容器(通过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