В качестве шаблона была взята первая практическая работа.
Данный проект реализует CI/CD конвейер, конвейер состоит из трёх стадий:
- unit_tests - Выполнение юнит тестов, всего их 4.
- build - создания docker-образа, в проекте используется образ Docker in docker (dind) и перенос его в репозиторий Docker hub
- deploy - деплой приложения (dind).
В отличие от первой практической работы, здесь реализован деплой приложение с использованием docker compose. Деплой был сделан методом blue-green
Процесс выполнения задания:
Настройка файла конфигурации nginx.conf. Здесь указываем на какой адрес будет перенаправлять nginx при запросе.
Создание файла docker-compose. Прописываем три сервиса: nginx, blue и green. Задаём необходимые настройки, nginx будет работать на 80 порту. Важно указать, чтобы сеть (network) у сервисов была одна, для правильного взаимодействия между ними.
Создаём файл shell. Для упрощения задачи тестирования приложения напишем Shell-скрипт, который последовательно выполнит все наши команды и запустит докер образ. Этот файл будет называться deploy_blue_green.sh. В данном файле будет прописана вся логика blue-green деплоя.
Обновим CI/CD скрипт. Практически весь скрипт написано по аналогии с предыдущей практической работы. Изменим скрипт на стадии deploy:
- docker pull $IMAGE_TAG
- chmod +x deploy_blue_green.sh
- ./deploy_blue_green.sh
Мы также пулим докер образ с репозитории Docker hub, однако далее мы изменяем права доступа к файлу .sh и запускаем его на исполнение. Докер образ запустится при выполнении Shell-скрипта.
Результатом работы будет запуск 5-и инстансов, которые заканчиваются успехом.