2016-08-18 2 views
1

läuft Ich habe ein Makefile, das wie folgt aussieht:Lauf Docker Integration Testbehälter während dev Container

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 

Und mein Docker-compose sieht wie folgt aus:

services: 
    foo: 
    container_name: foo${DOCKER_ENV} 
    image: foo:latest 
    bar: 
    container_name: bar${DOCKER_ENV} 
    image: bar:latest 

Wenn ich versuche, make dev zu laufen und dann make test letzteres bewirkt, dass die Entwickler-Container mit dem neuen Namen ("-test") neu erstellt werden, anstatt einen ganzen separaten Satz von Containern zu erstellen - was ich will.

Wie kann ich die Entwicklungsumgebung am Laufen halten und die Testumgebung regelmäßig hochfahren? (Wir werden diese an einem bestimmten Punkt auf CI tun, aber ich möchte Entwickler in der Lage sein, um vor Ort alle Tests laufen.)

Antwort

2

Mit dem Docker-compose Projektnamen zu trennen Entwickler von Test, zB:

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 

(My Makefile-Syntax ist ein wenig rostig, ich bin sicher, dass es sauberer Möglichkeiten, das zu tun.)

+2

Sie auch die 'COMPOSE_PROJECT_NAME' env Variable kann anstelle von' -p' verwenden. – dnephin