mirror of
https://github.com/batonogov/learn-devops.git
synced 2025-11-30 17:23:02 +00:00
Add docker (#6)
* Add docker * Update example --------- Co-authored-by: Fedor Batonogov <f.batonogov@yandex.ru>
This commit is contained in:
committed by
GitHub
parent
fab1ba15f3
commit
99088532f2
51
docker/deploy.sh
Normal file
51
docker/deploy.sh
Normal file
@@ -0,0 +1,51 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Эта строка настраивает оболочку так, чтобы она выходила из скрипта при возникновении ошибки в любой команде.
|
||||
# Это помогает обнаружить и обрабатывать ошибки в скрипте.
|
||||
set -e
|
||||
|
||||
# Проверяем состояние контейнера с именем "web-blue", чтобы определить, является ли он "здоровым" (healthy).
|
||||
# Если это так, переменным NEW и OLD присваиваются значения "green" и "blue" соответственно, иначе наоборот.
|
||||
if [ "$(docker compose ps web-blue | grep healthy)" ]
|
||||
then
|
||||
export NEW="green"
|
||||
export OLD="blue"
|
||||
else
|
||||
export NEW="blue"
|
||||
export OLD="green"
|
||||
fi
|
||||
|
||||
# Выводим сообщение о том, какой профиль поднимается в данный момент (значение переменной NEW).
|
||||
echo Поднимаю проект с профилем ${NEW}
|
||||
# Эта команда использует docker-compose для запуска проекта с указанным профилем (значение переменной NEW),
|
||||
# разворачивая контейнеры в фоновом режиме, пересоздавая их, удаляя сиротские контейнеры,
|
||||
# масштабируя сервис "web" на три экземпляра и дожидаясь их запуска.
|
||||
docker compose \
|
||||
--profile ${NEW} \
|
||||
up \
|
||||
--detach \
|
||||
--build \
|
||||
--remove-orphans \
|
||||
--scale web-${NEW}=3 \
|
||||
--wait
|
||||
|
||||
# Эта строка выводит сообщение о том, какие сервисы останавливаются в данный момент (значение переменной OLD).
|
||||
echo Останавливаю сервисы ${OLD}
|
||||
# Эта команда использует docker-compose для остановки сервиса "web" с именем, соответствующим значению переменной OLD.
|
||||
docker compose stop \
|
||||
web-${OLD}
|
||||
|
||||
# Эта строка выводит сообщение о том, какие сервисы удаляются в данный момент (значение переменной OLD).
|
||||
echo Удаляю сервисы ${OLD}
|
||||
# Эта команда использует docker-compose для принудительного удаления сервиса "web" с именем, соответствующим значению переменной OLD.
|
||||
docker compose rm -f \
|
||||
web-${OLD}
|
||||
|
||||
# Эта строка выводит сообщение о выводе списка всех контейнеров.
|
||||
echo Список контейнеров
|
||||
docker compose ps -a
|
||||
|
||||
# Эта команда выводит сообщение о том, что будут выведены журналы запуска для сервиса "web" с именем,
|
||||
# соответствующим значению переменной NEW, и затем выводит эти журналы.
|
||||
echo Журналы запуска web-${NEW}
|
||||
docker compose logs web-${NEW}
|
||||
Reference in New Issue
Block a user