Merge pull request 'borschevskaya_anna_lab_1' (#6) from borschevskaya_anna_lab_1 into main
Reviewed-on: #6
This commit is contained in:
commit
e10ae36577
61
borschevskaya_anna_lab_1/README.md
Normal file
61
borschevskaya_anna_lab_1/README.md
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
# Отчет. Лабораторная работа 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).
|
34
borschevskaya_anna_lab_1/docker-compose.yml
Normal file
34
borschevskaya_anna_lab_1/docker-compose.yml
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
services:
|
||||||
|
postgres:
|
||||||
|
image: postgres:latest # название и версия образа docker
|
||||||
|
container_name: postgres # название контейнера
|
||||||
|
environment: # блок переменных окружения, которые будут использованы для запуска и настройки
|
||||||
|
POSTGRES_USERNAME: postgres # имя пользователя супер-пользователя СУБД
|
||||||
|
POSTGRES_PASSWORD: postgres-admin # имя пользователя супер-пользователя СУБД
|
||||||
|
PGDATA: "/var/lib/postgresql/data/pgdata" # путь к директории, где Postgres будет хранить свои данные.
|
||||||
|
ports:
|
||||||
|
- "5432:5432" # пробрасываем стандартный порт для доступа к postgres
|
||||||
|
volumes:
|
||||||
|
- ./postgres_data:/var/lib/postgresql/data/ # монтируем локальную директорию в директорию внутри контейнера с данными базы данных
|
||||||
|
- ./init-database.sh:/docker-entrypoint-initdb.d/init-database.sh # Монтирует скрипт инициализации базы данных в специальную директорию внутри контейнера.
|
||||||
|
redmine:
|
||||||
|
image: redmine
|
||||||
|
container_name: redmine
|
||||||
|
ports:
|
||||||
|
- "8080:3000"
|
||||||
|
environment:
|
||||||
|
REDMINE_DB_POSTGRES: postgres # хост, на котором расположена база данных Postgres
|
||||||
|
REDMINE_DB_USERNAME: redmine # имя пользователя для подключения к базе данных Redmine
|
||||||
|
REDMINE_DB_DATABASE: redminedb # база данных, к которой будет подключаться Redmine
|
||||||
|
REDMINE_DB_PASSWORD: redmine-password # пароль, который будет использоваться для подключения
|
||||||
|
depends_on: # обозначаем зависимость запуска сервиса redmine от запуска сервиса postgres
|
||||||
|
- postgres
|
||||||
|
rabbitmq:
|
||||||
|
container_name: rabbitmq
|
||||||
|
image: rabbitmq:3-management
|
||||||
|
environment:
|
||||||
|
RABBITMQ_DEFAULT_USER: rabbit # переопределяем значения имя для пользователя, который создается по умолчанию
|
||||||
|
RABBITMQ_DEFAULT_PASS: rabbit-password # переопределяем значения пароля для пользователя, который создается по умолчанию
|
||||||
|
ports:
|
||||||
|
- "15672:15672" # порт для доступа к веб-интерфейсу
|
||||||
|
- "5672:5672" # порт для доступа через протокол AMQP к брокеру сообщений
|
15
borschevskaya_anna_lab_1/init-database.sh
Normal file
15
borschevskaya_anna_lab_1/init-database.sh
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Создаем пользователя 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
|
Loading…
Reference in New Issue
Block a user