Я новичок в технологиях Docker и CI / CD, и мне было интересно ... как вы думаете, каковы лучшие практики и команды для развертывания файла Docker Compose с использованием Gitlab CI / CD.
Я придумал следующий файл (но мне не нравится тот факт, что мне нужно сначала остановить контейнеры, чтобы снова запустить все):
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 для каждого микросервиса, поэтому они запускаются во время команды сборки.
Кроме того, я запускаю этап test
на одном компьютере и step-deploy-production
на другом с использованием разных тегов gitlab-runners.
Кроме того, каковы преимущества наличия образов докеров каждого микросервиса в реестре докеров?(Сам Docker или реестр Gitlab).Извините, если вопрос звучит слишком просто ...