我想在自己的服务器上部署Docker堆栈。我编写了一个.gitlab-ci.yml
文件,该文件当前在堆栈中构建图像并将其推送到gitlab注册表中:
build:
stage: build
image: docker:stable
services:
- docker:dind
before_script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- docker info
script:
- docker build -t $DOCKER_IMAGE1_TAG -f dir1/Dockerfile ./dir1
- docker push $DOCKER_IMAGE1_TAG
- docker build -t $DOCKER_IMAGE2_TAG -f dir2/Dockerfile ./dir2
- docker push $DOCKER_IMAGE2_TAG
我正在努力使用自己编写的docker deploy
文件在自己的服务器上运行docker-compose.yml
命令的方法,该文件成功地从gitlab注册表中提取了图像。我认为我可以使用sshpass
到ssh
到服务器中,然后复制docker-compose.yml
文件并从那里运行docker deploy
,但是我不确定什么是最好的方法允许我的服务器访问gitlab
注册表中的图像:
# Need to ssh into the server, transfer over docker-stack file and run docker swarm deploy
deploy:
stage: deploy
environment:
name: production
image: trion/ng-cli-karma
before_script:
- apt-get update -qq && apt-get install -y -qq sshpass
- eval $(ssh-agent -s)
这是我的docker-compse
文件的一部分:
version: "3.2"
services:
octeditor:
image: image # how to set this to the image in my container registry?
ports:
- "3000:3000"
networks:
- front-tier
deploy:
replicas: 1
update_config:
parallelism: 1
failure_action: rollback
placement:
constraints:
- 'node.role == manager'
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 3
window: 120s
如何从gitlab注册表中提取图像?这是通过gitlab ci在远程服务器上创建docker部署的首选方法吗?
答案 0 :(得分:3)
我最近同样遇到了这个问题,最后我发现解决方案只是在私有注册表中插入图像的链接,就像我在 gitlab 中的情况一样。
version: "3.2"
services:
octeditor:
image: registry.gitlab.com/project-or-group/project-name/image-name:tag
ports:
- "3000:3000"
networks:
- front-tier