Compare commits

..

2 Commits

Author SHA1 Message Date
b8a59b4932 Обновить kuzarin_maxim_lab_1/README.md
Удалил ненужные символы
2024-09-14 11:04:19 +04:00
e6dcbeb800 Выполнена первая ЛР. Добавлен отчёт и ссылка на видео 2024-09-12 21:27:13 +03:00
6 changed files with 74 additions and 67 deletions

14
kuzarin_maxim_lab_1/.env Normal file
View File

@@ -0,0 +1,14 @@
# Переменные для базы данных
POSTGRES_TAG=latest # Берём последнююю версию postgres. Пока это не принципиально
POSTGRES_DATA_DIR=./postgres-data
POSTGRES_PASSWORD=postgres_password
# Переменные для Web gui для БД
DB_GUI_IMAGE=adminer # Самый легковесный Web gui для postgres(и не только)
DB_GUI_CONTEINER_PORT=8080
# Переменные для брокера сообщения RabbitMQ
RABBIT_TAG=3.10.7-management # Тут есть встроенный Web интерфейс
RABBIT_DATA_DIR=./rabbit-data
RABBIT_USERNAME=user
RABBIT_PASSWORD=password

2
kuzarin_maxim_lab_1/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
postgres-data/
rabbit-data/

View File

@@ -0,0 +1,27 @@
# Лабораторная работа 1
Данная работа посвящена работе с docker compose и поднятию сервисов, необходимых для последующего выполнения работ.
## Описание
В качестве сервисов были выбраны:
- СУБД - Postgres
- Web интерфейс для БД Postgres - Adminer
- Брокер сообщений - RabbitMQ (+ Web интерфейс)
## Запуск
Для запуска лабораторной работы необходимо иметь запущенный движок Docker на устройстве.
Необходимо перейти в папку, где располагается данный файл. Далее открыть терминал и ввести команду:
```
docker compose up -d
```
В данном случае флаг `-d` не обязателен. Он лишь позволит оставить консоль интерактивной (запускает все контейнеры в фоновом режиме).
В случае, если в консоли отобразился подобный текст и появилась возможность вводить команды - сервисы успешно запущены.
```
[+] Running 4/4
✔ Network kuzarin_maxim_lab_1_default Created 0.0s
✔ Container kuzarin_maxim_lab_1-db-1 Started 0.7s
✔ Container kuzarin_maxim_lab_1-rabbit-1 Started 0.7s
✔ Container kuzarin_maxim_lab_1-db_web_gui-1 Started 0.7s
```
## Описание compose файла
В docker-compose файле все уникальные строчки помечены комментариями. Они описывают их предназначения, и иногда обосновывают принятые решения.
Так же комментарии присутствуют в файле .env, где хранятся переменные среды, нужные для работы compose файла.
## Видео демонстрация
Был записан видеоролик, демонстрирующий процесс запуска и работы сервисов. Он расположен по [адресу](https://drive.google.com/file/d/1ouUc-3eYhaJIR0HhD4b_Lj73oxEqORpA/view?usp=sharing)

View File

@@ -0,0 +1,31 @@
services:
db: # База данных
image: postgres:${POSTGRES_TAG} # Берём тег образа из переменной среды
restart: always # Автоматический перезапуск контейнера, если он упал
ports: # проброс портов
- 5432:5432 # Так как на хосте нет postgres, порт по умолчанию можно использовать свободно
volumes: # Указываем проброс папок
- ${POSTGRES_DATA_DIR}:/var/lib/postgresql/data # Данные postgres хранятся в /var/lib/postgresql/data.
# А на хосте монтируем туда, куда указано в переменной
environment: # Указываем переменные среды
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} # Пароль от учётки postgres берём из переменных среды
db_web_gui: # Интерфейс для доступа к БД (на компе нет PgAdmin)
image: ${DB_GUI_IMAGE} # Их есть много разных, так что имя образа из env
restart: always
ports:
- 8080:${DB_GUI_CONTEINER_PORT} # Так как Web GUI разные, то и порт может быть разный. Берём из env
rabbit: # Rabbit тоже понадобится в будущем
image: rabbitmq:${RABBIT_TAG} # Определяем тегом версию
restart: always
ports:
- 5672:5672 # Это порт доступа к брокеру (если буду разрабатывать на локале)
- 8081:15672 # А это порт для Web GUI. Для удобста на хосте это 8081, близко к БД
volumes:
- ${RABBIT_DATA_DIR}:/var/lib/rabbitmq # У Rabbit так же можно пробросить папку, чтобы не терять данные
environment:
RABBITMQ_DEFAULT_USER: ${RABBIT_USERNAME} # Логин для пользователя Rabbit Берём из env
RABBITMQ_DEFAULT_PASS: ${RABBIT_PASSWORD} # Пароль для пользователя Rabbit. Берём из env

View File

@@ -1,42 +0,0 @@
services: # Начало объявления сервисов
gitea: # Указывается название сервиса
image: gitea/gitea:1.22.2 # Указание названия образа (и/или его версии), который будет взят для создания контейнера
restart: always # Указывается политика перезапуска, в данном случае всегда перезапускать контейнер, если он остановился
environment: # Указываются переменные среды
- GITEA__database__DB_TYPE=postgres # Тип базы данных
- GITEA__database__HOST=postgres:5432 # Хост бд. Название сервиса это а-ля доменное имя и внутри сети разрешается в ip нужного контейнера
- GITEA__database__NAME=gitea # Название базы данных
- GITEA__database__USER=superuser # Пользователь базы данных
- GITEA__database__PASSWD=superpassword # Пароль пользователя базы данных
ports: # Перечисляются пробросы портов на хостовую машину. Слева порт хостовой машины, справа порт контейнера
- "3000:3000" # Web интерфейс
- "222:22" # SSH
volumes: # Указываются монтированные тома, папки, файлы. В данном случае в папку /data монтируется объявленный ниже том gitea
- gitea:/data
depends_on: # Указывается зависимость запуска контейнера от другого сервиса, в данном случае запускается только после запуска сервиса бд
- postgres
# Дальше всё по аналогии, различаются лишь названия, переменные окружения, образы, порты и тома
postgres:
image: postgres:14
restart: always
environment:
- POSTGRES_USER=superuser
- POSTGRES_PASSWORD=superpassword
- POSTGRES_DB=gitea
ports:
- "5432:5432"
volumes:
- postgres:/var/lib/postgresql/data
rabbitmq:
image: rabbitmq:3-management
environment:
RABBITMQ_DEFAULT_USER: superuser
RABBITMQ_DEFAULT_PASS: superpassword
ports:
- "5672:5672"
- "15672:15672"
volumes: # Перечисление томов, которые можно использовать как в одном, так и в нескольких сервисах
postgres:
gitea:

View File

@@ -1,25 +0,0 @@
# Лабораторная работа №1
В рамках данной лабораторной работы будут развёрнуты следующие сервисы:
1. **Gitea** - система управления версиями
2. **Postgres** - реляционая база данных
3. **Rabbitmq** - брокер сообщений
Инструкции к запуску контейнеров и пояснения к ним находятся в файле ```docker-compose.yml```
## Порядок запуска
#### 1. Установить docker или убедиться, что он установлен
#### 2. Перейти в папку с файлом ```docker-compose.yml```
#### 3. Выполнить команду в терминале: ```docker-compose up --build --remove-orphans```
Проверить успешность запуска можно командой ```docker ps -a```. Если всё прошло успешно, то в терминале будет написано:
```
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1a794331b32b gitea/gitea:1.22.2 "/usr/bin/entrypoint…" 20 seconds ago Up 18 seconds 0.0.0.0:3000->3000/tcp, 0.0.0.0:222->22/tcp polevoy_sergey_lab_1-gitea-1
b5fe33c61c1d rabbitmq:3-management "docker-entrypoint.s…" 20 seconds ago Up 19 seconds 4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, 15671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp rabbitmq
3d2db73d15c5 postgres:14 "docker-entrypoint.s…" 20 seconds ago Up 19 seconds 0.0.0.0:5432->5432/tcp polevoy_sergey_lab_1-postgres-1
```
Работать со всеми перечисленными сервисами можно сразу после запуска за исключением **gitea**. После первого запуска необходимо зайти на сервис, выполнить первоначальную настройку и создать суперпользователя.
## Видеодемонстрация работы
### Видео доступно по [ссылке](https://disk.yandex.ru/i/3Out4mUV6NEJuA)