場景:我在代碼中設置了一個斷點,該代碼被掛載(作爲一個卷)到由docker-compose創建的容器中。該代碼是一個odoo模塊,所以它是odoo容器的一部分。如何在交互模式下運行docker-compose容器,以便其他容器可以看到它?
還有一個webapp容器,它有一個odoo鏈接以便使用API。
odoo容器不公開API端口,因爲主機不需要它; webapp容器當然可以看到它。
services:
odoo:
volumes:
- localpath:/mnt/extra-addons-bundles
webapp:
links:
- odoo
當然,斷點的目的是讓我控制應用程序 - 所以我需要一個TTY附加。我可以用docker-compose run --rm odoo
來做到這一點。但是,當我這樣做時,它會創建一個新的容器,所以Web應用程序永遠不會碰到它。另外,它並沒有告訴我新的容器是什麼,所以我必須手動弄明白這一點。
我可以使用docker exec
在odoo容器中運行另一個odoo,但是我必須在新端口上運行它,從而將webapp配置更改爲使用此新實例。
有沒有辦法實現我想要的,即以交互模式運行odoo容器,以便webapp容器可以看到它,並且無需重新配置webapp容器?
如上所述,我嘗試過 - 但我不確定我是否正確使用它。 'docker-compose up'不會給我stdin,'docker-compose run'是問題的根源。你可以在做完這些後告訴我應該使用哪個命令? – Altreus
你不會得到docker-compose的stdin。你運行它的方式就是這樣。 'docker-up up -d'。現在如果你想在現有容器上運行,使用'docker-compose exec odoo bash'。如果你想連接到容器中的主進程,那麼使用'docker attach' –
我不知道有'docker attach'存在。什麼時候出現?用那個和'tty:true'我得到了我需要的 – Altreus