From e6dcbeb800d9cc0c82a176b4e43c7979c08ca6c1 Mon Sep 17 00:00:00 2001 From: KuzarinM Date: Thu, 12 Sep 2024 21:27:13 +0300 Subject: [PATCH] =?UTF-8?q?=D0=92=D1=8B=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BF=D0=B5=D1=80=D0=B2=D0=B0=D1=8F=20=D0=9B?= =?UTF-8?q?=D0=A0.=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=20?= =?UTF-8?q?=D0=BE=D1=82=D1=87=D1=91=D1=82=20=D0=B8=20=D1=81=D1=81=D1=8B?= =?UTF-8?q?=D0=BB=D0=BA=D0=B0=20=D0=BD=D0=B0=20=D0=B2=D0=B8=D0=B4=D0=B5?= =?UTF-8?q?=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kuzarin_maxim_lab_1/.env | 14 ++++++++++++ kuzarin_maxim_lab_1/.gitignore | 2 ++ kuzarin_maxim_lab_1/README.md | 28 +++++++++++++++++++++++ kuzarin_maxim_lab_1/docker-compose.yml | 31 ++++++++++++++++++++++++++ 4 files changed, 75 insertions(+) create mode 100644 kuzarin_maxim_lab_1/.env create mode 100644 kuzarin_maxim_lab_1/.gitignore create mode 100644 kuzarin_maxim_lab_1/README.md create mode 100644 kuzarin_maxim_lab_1/docker-compose.yml diff --git a/kuzarin_maxim_lab_1/.env b/kuzarin_maxim_lab_1/.env new file mode 100644 index 0000000..bd34c60 --- /dev/null +++ b/kuzarin_maxim_lab_1/.env @@ -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 \ No newline at end of file diff --git a/kuzarin_maxim_lab_1/.gitignore b/kuzarin_maxim_lab_1/.gitignore new file mode 100644 index 0000000..d301d51 --- /dev/null +++ b/kuzarin_maxim_lab_1/.gitignore @@ -0,0 +1,2 @@ +postgres-data/ +rabbit-data/ \ No newline at end of file diff --git a/kuzarin_maxim_lab_1/README.md b/kuzarin_maxim_lab_1/README.md new file mode 100644 index 0000000..4928178 --- /dev/null +++ b/kuzarin_maxim_lab_1/README.md @@ -0,0 +1,28 @@ + +# Лабораторная работа 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) diff --git a/kuzarin_maxim_lab_1/docker-compose.yml b/kuzarin_maxim_lab_1/docker-compose.yml new file mode 100644 index 0000000..6cc3992 --- /dev/null +++ b/kuzarin_maxim_lab_1/docker-compose.yml @@ -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 + + \ No newline at end of file