在dev容器运行时运行docker集成测试容器

时间:2016-08-18 17:56:35

标签: testing docker integration-testing docker-compose

我有一个看起来像这样的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上执行此操作,但我希望开发人员能够在本地运行所有测试。)

1 个答案:

答案 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语法有点生疏,我确信有更简洁的方法可以做到这一点。)