我有一个看起来像这样的Makefile:
dev:
docker-compose up -d --build
test:
DOCKER_ENV="-test" docker-compose up -d --build
// run some integration tests on the containers then
// shut them down (and let ephemeral database disappear)
DOCKER_ENV="-test" docker-compose down -v
我的docker-compose看起来像这样:
services:
foo:
container_name: foo${DOCKER_ENV}
image: foo:latest
bar:
container_name: bar${DOCKER_ENV}
image: bar:latest
当我尝试运行make dev
然后make test
时,后者会导致使用新名称(" -test")重建dev容器,而不是创建一个完整的单独容器容器集 - 这就是我想要的。
如何让开发环境保持运行并定期启动测试环境? (我们在某些时候会在CI上执行此操作,但我希望开发人员能够在本地运行所有测试。)
答案 0 :(得分:2)
使用docker-compose项目名称将dev与test分开,例如:
dev:
docker-compose up -d --build
test:
export DOCKER_PROJ=`basename \`pwd\``"-test"
docker-compose -p ${DOCKER_PROJ} up -d --build
// run some integration tests on the containers then
// shut them down (and let ephemeral database disappear)
docker-compose -p ${DOCKER_PROJ} down -v
(我的Makefile语法有点生疏,我确信有更简洁的方法可以做到这一点。)