.. | ||
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
, которая является специальной точкой входа
для инициализации БД и содержит соответствующие скрипты.
Как запустить
Для того, чтобы запустить сервисы, необходимо выполнить следующие действия:
- Установить и запустить Docker Engine или Docker Desktop (включает в себя Docker Engine и предоставляет UI)
- Через консоль перейти в папку, в которой расположен файл docker-compose.yml
- Выполнить команду:
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>
Видео-отчет
Работоспособность лабораторной работы можно оценить в следующем видео.