61 lines
3.8 KiB
Markdown
61 lines
3.8 KiB
Markdown
|
# Отчет. Лабораторная работа 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).
|