DAS_2024_1/borschevskaya_anna_lab_1
..
docker-compose.yml
init-database.sh
README.md

Отчет. Лабораторная работа 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>

Видео-отчет

Работоспособность лабораторной работы можно оценить в следующем видео.