1) создать сервис (через docker-compose-файл), состоящий из 2 различных контейнеров: 1 – веб, 2 – БД
2) далее необходимо создать 3 сервиса в каждом окружении (dev, prod, lab)
3) запустите каждый сервис на отдельной ноде, т.е. на каждой ноде должно быть по 2 работающих контейнера
4) выводы зафиксировать, покажите docker stack ps для каждого сервиса.
yaml
version: '3'
services:
web:
image: nginx
ports:
- "80:80"
db:
image: postgres
Теперь нам нужно создать 3 сервиса в каждом окружении: dev, prod и lab. Для этого для каждого окружения создадим отдельный файл: docker-compose.dev.yml, docker-compose.prod.yml и docker-compose.lab.yml. Подключим их к основному docker-compose.yml через команду `extends`, указывая путь до каждого файла:
yaml
version: '3'
services:
web:
...
extends:
file: docker-compose.dev.yml
service: web
db:
...
extends:
file: docker-compose.dev.yml
service: db
В каждом из файлов docker-compose.dev.yml, docker-compose.prod.yml и docker-compose.lab.yml опишем свои настройки окружения для контейнеров. Например, для dev окружения создадим файл docker-compose.dev.yml:
yaml
version: '3'
services:
web:
environment:
ENV_NAME: dev
db:
environment:
ENV_NAME: dev
В данном случае мы передаем переменную окружения ENV_NAME со значением "dev" в контейнеры.
После этого мы сможем запустить каждый сервис на отдельной ноде. Для этого установим Docker Swarm на нашу систему, если он еще не установлен. Затем запустим Docker Swarm командой `docker swarm init` и создадим несколько нод.
После создания нод мы развернем наши сервисы с использованием команды `docker stack deploy` и указанием имени сервиса и файла docker-compose.yml:
bash
$ docker stack deploy --compose-file docker-compose.yml myapp
В итоге, у нас будет развернуто 3 сервиса в разных окружениях (dev, prod, lab) на разных нодах, с двумя работающими контейнерами на каждой ноде.
Чтобы убедиться, что все сервисы работают, выполним команду `docker stack ps` для каждого сервиса:
bash
$ docker stack ps myapp_dev
bash
$ docker stack ps myapp_prod
bash
$ docker stack ps myapp_lab
Эта команда покажет информацию о контейнерах, запущенных для каждого сервиса.
Таким образом, мы создали сервис с двумя контейнерами, настроили три окружения (dev, prod, lab) и запустили каждый сервис на отдельной ноде. Команда `docker stack ps` позволит нам убедиться, что все сервисы работают правильно.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет