假设我有以下 docker-compose.yml
文件并行运行两个不同的 python 应用程序(例如通过 flask ):
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 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30381410/