我是Docker技术和CI / CD的新手,我想知道...在您看来,使用Gitlab CI / CD部署Docker Compose文件的最佳实践和命令是什么。
我想到了以下文件(但我不喜欢必须先停止容器才能再次运行所有内容的事实)
image: docker:latest
services:
- docker:dind
variables:
DOCKER_DRIVER: overlay2
stages:
- test
- deploy
test:
stage: test
tags:
- development
only:
- develop
- master
cache:
untracked: true
policy: pull-push
paths:
- ./microservices/api/node_modules
- ./microservices/client/node_modules
script:
- sudo docker-compose build --no-cache
step-deploy-production:
stage: deploy
only:
- master
script:
- sudo docker image prune -f
- sudo docker-compose build --no-cache
- sudo docker-compose up -d --scale api=5 --scale client=5
tags:
- production
when: manual
每个Docker服务的每个Docker文件中都有不同的单元测试,因此它们在build命令期间运行。
此外,我正在使用不同的gitlab-runners标签在一台机器上运行test
阶段,在另一台机器上运行step-deploy-production
。
此外,将每个微服务的docker映像放在docker注册表中有什么优势? (Docker本身或Gitlab注册表)。抱歉,这个问题听起来太基本了...