dynamic获取由docker-compose创build的正在运行的容器名称

当我运行我的docker-compose时,它会创build一个web容器和postgres容器。

我想手动触发我的Djangotesting运行,通过类似的东西

docker-compose run web python manage.py test 

问题在于它创build了一个新的容器(需要应用新的迁移,家务pipe理等)

我倾向于select类似的选项

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

这引入了一个新问题,那就是我必须先运行docker ps来获取容器名称。 这一切的重点是自动运行每个版本的testing,所以它必须自动化,手动运行docker ps不是一个解决scheme。

那么有没有办法dynamic获取容器ID还是有更好的方法来做到这一点? 如果您可以在docker-compose中分配容器名称,这不会成为问题

只需使用docker-compose exec 。 它将在已经运行的容器中执行,而不是启动一个新的容器。

 docker-compose exec web python manage.py test 

您可以在docker-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/