0

나는 Docker와 Docker가 새로 작성되었습니다.다른 서비스 상태가 0 (성공)이면 도커 - 실행 서비스

도커 작성 기능을 사용하여 프로젝트를 테스트하고 테스트가 정상이면 게시 할 수 있습니다. 테스트가 실패하면 앱을 전혀 게시해서는 안됩니다. 여기

testAndPublish.sh 파일 내 고정 표시기 - compose.yml 그 후

version: '3' 
services: 
    mongodb: 
    image: mongo 
    test: 
    build: 
     context: .  
     dockerfile: Dockerfile.tests 
    links: 
     - mongodb 
    publish: 
    build: 
     context: . 
     dockerfile: Dockerfile.publish 
    ?? # I want to say here that publish step is dependent to test. 

,, 나는 말하고 싶다 :

docker-compose up 

    if [ $? = 0 ]; then # If all the services succeed 
     .... 
    else 
     .... 
    fi 

시험 또는 단계가 실패하는 공표 그렇다면, I 그것을 밀어 내지 않을 것입니다.

도커 작성과 같은 단계로 프로세스를 만들려면 어떻게해야합니까? 감사합니다. .

답변

0

나는 모두 잘못된 방법으로 docker-compose으로 모든 것을하려한다고 생각합니다.

는 다음과 같이 난 항상 내 워크 플로우를 만들 CI (FE 트래비스 또는 CircleCI)에 관해서 :

  • 하는의 당신이 install 단계에서 web 노드와 database 노드 travis.yml 또는 circle.yml에서
  • 가 있다고 가정 해 보자 나는 항상 fe와 같은 것들을 넣는다. docker-compose run web npm installtest 단계에서
  • 나는 둘 것 docker-compose run web npm test 또는 이와 유사한 docker-compose run web my-test-script.sh 같은, 당신은 테스트가 실패 할 경우이 단계가 실패하고있는 전체 시험 단계, 선언 된 고정 표시기 환경에서 실행되는 것을 알 수 그런 식으로 CI가 실패합니다.
  • deploy 단계에서 나는 deploy.sh 스크립트를 실행하여 Dockerfile (web이 사용하는 이미지)에서 이미지를 빌드하고 Docker Hub에 밀어 넣습니다.

이런 식으로 CI 테스트 루틴은 여전히 ​​특정 Docker 환경에 따라 다르지만 배포 푸시 (Docker가 필요하지 않음)는 응용 프로그램과 별도로 보관되므로보다 편리하게 사용할 수 있습니다.

+0

감사합니다. sh 파일을 통해 단계를 관리 할 것입니다. – skynyrd