Я пытаюсь развернуть свое приложение с помощью gitlab-runner.
Вот скрипт .gitlab-ci.yml:
stages:
- build
- deploy
image: docker:20
variables:
IMAGE_NAME: front:$CI_COMMIT_REF_NAME
build:
stage: build
when: manual
script:
- docker build -t $IMAGE_NAME .
- docker run -dp 80:80 $IMAGE_NAME
only:
- master
- tags
tags:
- front
После первого выполнения все в порядке, у меня есть работающий контейнер с моим приложением. Но при следующем выполнении задания я получаю сообщение об ошибке:
$ docker run -dp 80:80 $IMAGE_NAME
956d5a27449df0d38db357256fb96cf8cab8ba689d05fda21e54552bbe93fb7a
docker: Error response from daemon: driver failed programming external connectivity on endpoint frosty_elion (d89b1f150968331727a7c00823c28f3ab6a80f7882d659fce3520834005ad197): Bind for 0.0.0.0:80 failed: port is already allocated.
Cleaning up file based variables
ERROR: Job failed: exit code 125
Вопрос: как избежать конфликта с запущенным контейнером, который все еще использует требуемый порт?
Вот gitlab-runner config.toml:
concurrent = 1
check_interval = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "name"
url = "url"
token = "token"
executor = "docker"
[runners.custom_build_dir]
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
[runners.docker]
tls_verify = false
image = "docker:latest"
privileged = true
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]
shm_size = 0