Как запустить вновь созданный образ docker при развертывании? - PullRequest
1 голос
/ 01 августа 2020

Я создал конвейер gitlab-ci.yml для развертывания простого приложения response. js. Я установил gitlab-runner на EC2 (AWS) и внутри своего конвейера я создаю образ и помещаю его в реестр sh.

Это мой файл 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 контейнеры. Я тоже думал сделать docker stop app.test && docker rm app.test, но если по какой-то причине контейнер не работает, это приведет к ошибке и не развернется.

Как правильно разрешить эту ситуацию?

1 Ответ

0 голосов
/ 01 августа 2020

Сообщение об ошибке означает, что у вас уже есть контейнер с таким именем, а docker не позволяет вам иметь несколько контейнеров с тем же именем, чтобы исправить это, удалите старый контейнер, просто выполните в терминале что-то вроде $docker ps -a, и вы получите список всех контейнеров, которые у вас есть, затем определите идентификатор контейнера с этим именем и удалите его, выполнив:

$docker rm -f <container-id>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...