2017-01-12 26 views
0

當我運行我的docker-compose時,它創建一個web容器和postgres容器。動態獲取由docker-compose創建的正在運行的容器名稱

我想手動觸發我的Django的測試運行,通過像

docker-compose run web python manage.py test 

是它會創建一個新的容器(需要新的遷移中應用,家政工作等)的問題,這

我傾向於它做這樣的事情

docker exec -i -t <containerid> python manage.py test 

這就引入了一個新的問題,這是我必須運行選項0首先獲取容器名稱。整個過程就是自動運行每個版本的測試,因此必須自動化,手動運行docker ps不是一個解決方案。

那麼有沒有辦法動態獲取容器ID還是有更好的方法來做到這一點?如果您可以在Docker-compose中分配容器名稱,這不會成爲問題

+0

您可以用命名(例如),當你運行它'--name my_container'容器。 – Niloct

+0

https://docs.docker.com/compose/compose-file/#/containername – Niloct

+0

我知道你可以做到這一點,當運行一個單獨的容器,但我使用碼頭組成 – david

回答

2

只需使用docker-compose exec。它將在已經運行的容器中執行,而不是啓動一個新的容器。

docker-compose exec web python manage.py test 
+0

這從來沒有爲我工作。 docker-compose exec web python manage.py test「no such command exec」 – david

+0

and docker exec web python manage.py test「沒有這樣的容器:web」 – david

+0

@david您使用的是什麼版本的docker-compose?我有1.10.0-rc1,它支持'exec' ... –

1

您可以分配一個名稱使用上的搬運工,compose.yml文件container_name選項的容器。

container_name: container_name

然後,你可以很容易地在容器使用運行命令。

docker exec container_name python manage.py test

有關docker-compose選項的更多信息,請訪問官方文檔。

https://docs.docker.com/compose/compose-file/

相關問題