2017-01-12 27 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/

相关问题