간단한 react.js 애플리케이션을 배포하기 위해 gitlab-ci.yml 파이프 라인을 만들었습니다. EC2 (AWS)에 gitlab-runner를 설치하고 파이프 라인 내부에서 이미지를 빌드하고 레지스트리로 푸시했습니다.
이것은 내 gitlab-ci.yml 파일입니다.
image: docker:latest
services:
- docker:dind
stages:
- test
- deploy
test-build:
stage: test
only:
- master
tags:
- master
script:
- sudo docker build .
deploy-production:
stage: deploy
only:
- master
tags:
- master
before_script:
# remove the offending package golang-docker-credential-helpers without removing all of docker-compose
- sudo dpkg -r --ignore-depends=golang-docker-credential-helpers golang-docker-credential-helpers
- sudo docker version
- "sudo docker info"
- "sudo docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY"
script:
- "sudo docker build -t ${CI_REGISTRY}/${CI_PROJECT_PATH}:latest --pull ."
- "sudo docker push ${CI_REGISTRY}/${CI_PROJECT_PATH}:latest"
- "sudo docker run -it -d -p 80:80 --rm --name daruma.comunicato ${CI_REGISTRY}/${CI_PROJECT_PATH}:latest"
after_script:
- "sudo docker logout ${CI_REGISTRY}"
when: manual
문제는 최신 푸시 이미지를 어떻게 실행합니까? docker run -it ...
파이프 라인을 실행 하면 다음과 같이 실패합니다.
docker : 데몬의 오류 응답 : 충돌. 컨테이너 이름 '/app.test'는 'f8e888d6dff6fe5808d7577fe8fddc3e24cd8cc0e248a69d36e7ce51bf339ae6'컨테이너에서 이미 사용 중입니다. 해당 이름을 재사용하려면 해당 컨테이너를 제거 (또는 이름 변경)해야합니다.
해당 컨테이너가 이미 실행 중이고 이름이 같기 때문입니다. 다른 도커 컨테이너를 실행할 수 있기 때문에 배포 할 때 모든 컨테이너를 중지하고 싶지 않습니다. 나도 그렇게 생각 docker stop app.test && docker rm app.test
했지만 어떤 이유로 컨테이너가 다운되면 오류가 발생하고 배포되지 않습니다.
이 상황을 처리하는 올바른 방법은 무엇입니까?
오류 메시지는 이미 해당 이름을 가진 컨테이너가 있고도 커가 동일한 이름을 가진 여러 컨테이너를 가질 수 없음을 의미하며,이를 수정하고 이전 컨테이너를 제거하고 터미널에서 다음과 같이 $docker ps -a
하면 목록이 표시됩니다. 보유한 모든 컨테이너의 이름을 지정한 다음 해당 이름으로 컨테이너의 ID를 식별하고 다음을 수행하여 제거하십시오.
$docker rm -f <container-id>
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다