2017-09-15 55 views
0

場景:我在代碼中設置了一個斷點,該代碼被掛載(作爲一個卷)到由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容器?

回答

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> 
+0

如上所述,我嘗試過 - 但我不確定我是否正確使用它。 'docker-compose up'不會給我stdin,'docker-compose run'是問題的根源。你可以在做完這些後告訴我應該使用哪個命令? – Altreus

+0

你不會得到docker-compose的stdin。你運行它的方式就是這樣。 'docker-up up -d'。現在如果你想在現有容器上運行,使用'docker-compose exec odoo bash'。如果你想連接到容器中的主進程,那麼使用'docker attach ' –

+0

我不知道有'docker attach'存在。什麼時候出現?用那個和'tty:true'我得到了我需要的 – Altreus

0

答案是在docker-compose文件中使用tty: true,然後使用docker attach實際上將該進程連接到終端。

相關問題