У меня есть следующий скрипт gitlab-ci. Он используется для сервера данных инструмента под названием «облачно».
бегун находится на целевой машине.
image: 'docker/compose:1.25.0-rc1'
services:
- 'docker:dind'
variables:
GIT_SUBMODULE_STRATEGY: recursive
stages:
- build
- deploy
buildCode:
stage: build
except:
- deploy
script:
- docker build -t cloudy-dataserver -t ${CI_REGISTRY}/${CI_PROJECT_PATH}:latest -f dockerfile .
deployCode:
stage: deploy
only:
- deploy
script:
- docker build -t cloudy-dataserver -t ${CI_REGISTRY}/${CI_PROJECT_PATH}:latest -f dockerfile .
- docker login registry.gitlab.com -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD}
- docker push ${CI_REGISTRY}/${CI_PROJECT_PATH}:latest
- docker network create cloudy-network && echo 'creating network'
- docker-compose -f docker-compose.yml pull
- docker-compose -f docker-compose.yml rm -f -s
- docker-compose -f docker-compose.yml up -d
в строке:
- docker network create cloudy-network && echo 'creating network'
Эхо-часть состоит в том, чтобы избежать ошибки из уже существующей сети.
локально, когда я хочу протестировать, у меня есть скрипт с этим:
[ ! "$(docker network ls | grep cloudy-network)" ] && docker network create cloudy-network
docker-compose pull
docker-compose down
docker-compose up -d
, поэтому раздел CI для докера-compose имеет:
, но локальный имеет:
, и причина в том, что локальный путь НЕВОЗМОЖЕН при запуске в контейнере CI.
если я выполняю down, в контейнере CI появляется ошибка типа "не могу запустить службу X: контейнер" ... ": уже существует"
почему она работает локально, ноне удаленно?
бонусный вопрос: если я построю образ докера локально, где находится бегун;мне нужно нажать / вытащить образ, или я могу развернуть его напрямую?