场景:我在代码中设置了一个断点,它被挂载(作为卷)到由docker-compose创建的容器中。代码是一个odoo模块,因此它是odoo容器的一部分。
还有一个webapp容器,它有一个指向odoo的链接以便使用API。
odoo容器不公开API端口,因为主机不需要它;当然,webapp容器可以看到它。
services:
odoo:
volumes:
- localpath:/mnt/extra-addons-bundles
webapp:
links:
- odoo
当然,断点的目的是允许我控制应用程序 - 所以我需要附加一个TTY。我可以使用docker-compose run --rm odoo
执行此操作。但是,当我这样做时,它会创建一个新容器,因此webapp实际上从未实现过它。另外,它没有告诉我新的容器被调用了什么,所以我必须手动弄清楚它是做什么的。
我可以使用docker exec
在odoo容器中运行另一个odoo但是我必须在新端口上运行它,从而更改webapp配置以使用这个新实例。
有没有办法实现我想要的,即以交互模式运行odoo容器,以便webapp容器可以看到它,而无需重新配置webapp容器?
答案 0 :(得分:0)
试试这个,看它是否有效
services:
odoo:
volumes:
- localpath:/mnt/extra-addons-bundles
tty: true
stdin_open: true
webapp:
links:
- odoo
如果您不需要,我还添加了stdin_open
,如果您不想删除它
修改-1 强>
此外,如果您需要附加到正在运行的容器,则需要使用docker attach
,因为docker-compose
没有该功能
docker attach <containername>
答案 1 :(得分:0)
答案是在docker-compose文件中使用tty: true
,并docker attach
实际将该进程附加到终端。