我有以下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
因此docker-compose的CI部分具有:
但是本地人有:
原因是在CI容器中运行时,本地方式失败。
如果我在CI容器中关闭,则会出现类似“无法启动服务X:容器“ ...”:已经存在“的错误
为什么它在本地而不是在远程工作?
额外的问题:如果我在本地构建docker映像,运行程序所在的位置;我需要推/拉映像,还是可以直接部署它?