# Отчет. Лабораторная работа 1 В рамках лабораторной работы с помощью технологии контейнеризации docker были развернуты сервисы: - Redmine - система баг-трекинга - Postgres - СУБД - RabbitMQ - брокер сообщений ## Описание В docker-compose.yml файле описаны настройки для запуска трех выбранных сервисов в контейнерах. Для большинства строк файла оставлены комментарии, объясняющие содержимое файла. Стоит отметить, для сервиса Redmine было принято решение в качестве сервера баз данных не использовать базу данных по умолчанию - SQLite, а поднять внешний сервер баз данных Postgres, который был запущен в рамках этого же файла docker-compose.yml. Для того, чтобы при старте postgres уже была создана база данных для Redmine, а также пользователь, под учетной записью которого будет работать Redmine, был написан скрипт init-database.sh с использованием bash и sql: ``` # Создаем пользователя redmine и БД redminedb psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL CREATE USER redmine WITH PASSWORD 'redmine-password'; CREATE DATABASE redminedb; GRANT ALL PRIVILEGES ON DATABASE redminedb TO redmine; EOSQL # Даем права на схему public psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USERNAME" -d redminedb <<-EOSQL ALTER SCHEMA public OWNER TO redmine; GRANT ALL ON SCHEMA public TO redmine; EOSQL ``` Этот скрипт монтируется в директорию контейнера postgres ``docker-entrypoint-initdb.d``, которая является специальной точкой входа для инициализации БД и содержит соответствующие скрипты. ## Как запустить Для того, чтобы запустить сервисы, необходимо выполнить следующие действия: 1. Установить и запустить Docker Engine или Docker Desktop (включает в себя Docker Engine и предоставляет UI) 2. Через консоль перейти в папку, в которой расположен файл docker-compose.yml 3. Выполнить команду: ``` docker compose up -d ``` В случае успешного запуска всех контейнеров в консоли будет выведено следующее сообщение: ``` [+] Running 3/3 ✔ Container rabbitmq Started 0.8s ✔ Container redmine Started 1.2s ✔ Container postgres Started 0.5s ``` Также будет создана папка postgres_data, которая монтируется в контейнере postgres Мы также можем увидеть статус всех запущенных контейнеров, если выполним команду: ``` docker ps ``` Или обратившись к логам каждого из контейнеров: `` docker logs <container_name> `` ## Видео-отчет Работоспособность лабораторной работы можно оценить в следующем [видео](https://disk.yandex.ru/d/15QhUl3KQYSavA).