diff --git a/gapon_nikolay_lab_1/README.md b/gapon_nikolay_lab_1/README.md new file mode 100644 index 0000000..187f59c --- /dev/null +++ b/gapon_nikolay_lab_1/README.md @@ -0,0 +1,33 @@ +# Лабораторная работа 1 - Знакомство с Docker и Docker Compose +## Гапон Николай // ИСЭбд-41 + +# Описание работы + +> Цель +Освоение технологий контейнеризации для современных приложений. + +> Задачи +1. Установка и настройка Docker Desktop. +2. Изучение базовых принципов работы Docker. +3. Ознакомление с Docker Compose. +4. Развёртывание сервисов. +5. Подготовка отчёта о проделанной работе. + +> Ход выполнения работы +1. Изучить официальную документацию Docker и статьи на Habr. +2. Скачать и установить Docker Desktop. +3. Найти на Docker Hub примеры запуска Gitea, MediaWiki и PostgreSQL с помощью Docker Compose. +4. Выполнить команду `docker-compose up` в терминале. +5. Устранить ошибки, если они возникнут. +6. Записать демонстрационное видео работы сервисов. +7. Запушить изменения в ветку на Git. +8. Создать Merge Request (MR) для проверки. + +> Инструкция по запуску +1. Скачать и установить Docker, если ещё не установлен +2. Перейти в gapon_nikolay_lab_1 (cd ./gapon_nikolay_lab_1/) +3. Выполнить в терминале 'docker-compose up' +4. Проверить порты, на которых docker поднял контейнеры + +> Видео демонстрация работы +https://disk.yandex.ru/i/TgQoHrpZrZlGLA \ No newline at end of file diff --git a/gapon_nikolay_lab_1/docker-compose.yml b/gapon_nikolay_lab_1/docker-compose.yml new file mode 100644 index 0000000..9c6f31e --- /dev/null +++ b/gapon_nikolay_lab_1/docker-compose.yml @@ -0,0 +1,69 @@ +version: '3.8' + +# Определение сервисов +services: + # Сервис базы данных PostgreSQL + db: + image: postgres:latest # Готовый образ PostgreSQL + container_name: postgres_db + restart: always + environment: + - POSTGRES_DB=${POSTGRES_DB:-mydb} # Имя БД + - POSTGRES_USER=${POSTGRES_USER:-admin} # Пользователь БД + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-admin} # Пароль пользователя БД + volumes: + - db_data:/var/lib/postgresql/data # Монтирование тома для хранения данных БД + networks: + - app_network + + # Сервис Gitea + gitea: + image: gitea/gitea:latest # Готовый образ Gitea + container_name: gitea + restart: always + ports: + - "${GITEA_WEB_PORT:-3000}:3000" # Проброс веб-порта + - "${GITEA_SSH_PORT:-2222}:22" # Проброс SSH-порта + volumes: + - gitea_data:/data # Монтирование тома для постоянного хранения данных + environment: + - USER_UID=1000 # UID пользователя внутри контейнера + - USER_GID=1000 # GID пользователя внутри контейнера + - DB_TYPE=postgres + - DB_HOST=db:5432 + - DB_NAME=${POSTGRES_DB:-mydb} + - DB_USER=${POSTGRES_USER:-admin} + - DB_PASSWD=${POSTGRES_PASSWORD:-admin} + depends_on: + - db # Gitea запускается после PostgreSQL + networks: + - app_network + + # Сервис MediaWiki + mediawiki: + image: mediawiki:latest # Готовый образ MediaWiki + container_name: mediawiki + restart: always + ports: + - "${MEDIAWIKI_PORT:-8080}:80" # Проброс порта + volumes: + - mediawiki_data:/var/www/html # Монтирование тома для постоянного хранения данных + environment: + - MEDIAWIKI_DB_HOST=db # Хост базы данных + - MEDIAWIKI_DB_NAME=${POSTGRES_DB:-mydb} # Имя БД для MediaWiki + - MEDIAWIKI_DB_USER=${POSTGRES_USER:-admin} # Пользователь БД + - MEDIAWIKI_DB_PASSWORD=${POSTGRES_PASSWORD:-admin} # Пароль пользователя БД + depends_on: + - db # MediaWiki запускается после PostgreSQL + networks: + - app_network + +# Определение volumes для хранения данных вне контейнеров +volumes: + db_data: + gitea_data: + mediawiki_data: + +networks: + app_network: + driver: bridge diff --git a/gapon_nikolay_lab_1/env b/gapon_nikolay_lab_1/env new file mode 100644 index 0000000..e8f4fba --- /dev/null +++ b/gapon_nikolay_lab_1/env @@ -0,0 +1,6 @@ +POSTGRES_DB=mydb +POSTGRES_USER=admin +POSTGRES_PASSWORD=admin +GITEA_WEB_PORT=3000 +GITEA_SSH_PORT=2222 +MEDIAWIKI_PORT=8080 \ No newline at end of file