2017-07-21 12 views
0

Ich erhalte den folgenden Fehler während des Tests "test_image", wenn ich Tests mit Docker-Images in meiner gitlab-CI-Pipeline durchführe. Ich kann es nicht lokal reproduzieren, es kommt nur auf der Gitlab-Runner-Box vor. Irgendwelche Ideen?Der Containername wird bereits von container verwendet - gitlab ci

Der Containername "/ common_run_1" ist bereits von Container

image: docker:latest 

stages: 
    - build 
    - test 
    - release 

before_script: 
    - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN myregistry.gitlab 

build_image: 
    stage: build 
    script: 
    - docker build --pull -t $CONTAINER_TEST_IMAGE . 
    - docker-compose up -d --build 
    - docker push $CONTAINER_TEST_IMAGE 

pylint: 
    stage: test 
    script: 
    - docker pull $CONTAINER_TEST_IMAGE 
    - docker-compose run common pylint common 

test_image: 
    stage: test 
    script: 
    - docker pull $CONTAINER_TEST_IMAGE 
    - docker-compose run common nosetests common 

push_master_image: 
    stage: release 
    script: 
    - docker pull $CONTAINER_TEST_IMAGE 
    - docker tag $CONTAINER_TEST_IMAGE $CONTAINER_MASTER_IMAGE 
    - docker push $CONTAINER_MASTER_IMAGE 
    only: 
    - master 

push_prod_image: 
    stage: release 
    script: 
    - docker pull $CONTAINER_TEST_IMAGE 
    - docker tag $CONTAINER_TEST_IMAGE $CONTAINER_PROD_IMAGE 
    - docker push $CONTAINER_PROD_IMAGE 
    only: 
    - prod 

Update: Es gibt mehrere Vorschläge einfach verwenden, um "Docker-komponieren down" oder "Docker stop". Ich habe dies auf meiner gitlab-runner-Box getan (Docker-Prozesse, Images, Volumes und Netzwerke wurden vollständig gelöscht) und die Pipeline-Anforderung erneut gesendet. In diesem Fall bekomme ich den gleichen Fehler in der gitlab-Pipeline. Es lässt mich glauben, dass es in der "Testphase" ein Nebenläufigkeitsproblem gibt. Außerdem, wenn ich eine "test2" -Stufe hinzufüge und das "pylint" -Skript darin platziere, wird die Pipeline erfolgreich sein, was die Idee eines Nebenläufigkeitsproblems weiter verstärkt.

+0

Ich habe meine Antwort aktualisiert! Bitte prüfe! – Ayushya

Antwort

2

Ihre Bühne: Test hat zwei Docker-Compose-Lauf und beide laufen mit dem gleichen Container-Namen. Sie können dies ändern, indem Sie --name test1 in docker-compose run des ersten Tests und --name test2 in docker-compose run des zweiten Tests hinzufügen.

Original-Antwort

Run docker ps -a und es wird eine Liste, welche Containernamen sind bereits im Einsatz. Dies liegt hauptsächlich daran, dass Sie den Container bereits mit docker-compose up ausgeführt haben und die Container noch immer aktiv sind.

Ihre Optionen sind

  1. Run docker-compose down. Dies sollte die bereits laufenden Container zum Absturz bringen. Und sollte wahrscheinlich deinen Fehler lösen.
  2. Wenn Option 1 fehlschlägt, können Sie sehen, welche Container ausgeführt werden, und diese Container anhalten, indem Sie docker stop <container_name> ausführen.
+0

Der Containername sollte die Variable $ CI_JOB_ID enthalten, damit sie nicht mit Pipes kollidiert, die für andere Commits ausgeführt werden. –