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