当我运行docker-compose时,它会创建一个web容器和postgres容器。
我想手动触发我的Django测试,通过类似
的方式运行docker-compose run web python manage.py test
这个问题是它创建了一个新的容器(需要应用新的迁移,管理工作等)。
我倾向于选择
这样的选项docker exec -i -t <containerid> python manage.py test
这引入了一个新问题,即我必须首先运行docker ps
来获取容器名称。这一点的重点是自动运行每个构建的测试,因此必须自动运行,手动运行docker ps
不是解决方案。
那么有没有办法动态获取容器ID或者有更好的方法吗?如果您可以在docker-compose
中分配容器名称,那么这不会成为问题答案 0 :(得分:3)
只需使用docker-compose exec
即可。它将在已经运行的容器中执行,而不是启动新的容器。
docker-compose exec web python manage.py test
答案 1 :(得分:3)
您可以使用docker-compose.yml文件中的container_name
选项为容器指定名称。
container_name: container_name
然后,您可以使用。
轻松地在该容器中运行命令 docker exec container_name python manage.py test
。
有关docker-compose选项的更多信息,请访问官方文档。
答案 2 :(得分:2)
虽然提供了可接受的答案,但答案本身与该问题的标题并不真正相关:
动态获取由docker-compose创建的运行容器名称
要动态检索由docker-compose运行的容器的名称,您可以执行以下命令:
$(docker inspect -f '{{.Name}}' $(./devbox docker-compose ps -q web) | cut -c2-)