当我运行docker-compose时,它会创建一个Web容器和postgres容器。
我想通过类似的方式手动触发我的Django测试运行
docker-compose run web python manage.py test
问题是它创建了一个新容器(需要应用新的迁移,内部管理工作等)
我倾向于的选择是做类似的事情
docker exec -i -tpython manage.py test
这引入了一个新问题,即我必须先运行docker ps
才能获取容器名称。这样做的全部目的是为每个构建自动运行测试,因此它必须是自动化的,手动运行docker ps
不是解决方案。
那么,有没有一种方法可以动态获取容器ID,或者有更好的方法来做到这一点?如果您可以在docker-compose中分配容器名称,则不会有问题
虽然提供了可接受的答案,但答案本身与该问题的标题并不真正相关:
动态获取由docker-compose创建的正在运行的容器名称
要动态检索由docker-compose运行的容器的名称,可以执行以下命令:
$(docker inspect -f '{{.Name}}' $(./devbox docker-compose ps -q web) | cut -c2-)