Files
learn-devops/docker/deploy.sh
github-actions[bot] 946cde1ea6 Add pre-commit hook (#8)
* Add pre-commit hook

* Fix progress

* Update hook

---------

Co-authored-by: Fedor Batonogov <f.batonogov@yandex.ru>
2024-05-22 15:05:24 +03:00

52 lines
3.2 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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}