# Лабораторная работа №1 - Знакомство с docker и docker-compose

**Цель**: изучение современных технологий контейнеризации.

**Задачи**:

1. Установить средство контейнеризации docker.
2. Изучить применение и принципы docker.
3. Изучить утилиту docker-compose и структуру файла docker-compose.yml.
4. Развернуть не менее 3х различных сервисов при помощи docker-compose.
5. Оформить отчёт в формате Markdown и создать Pull Request в git-репозитории.

## Разворачивание сервисов

Предлагается развернуть не менее 3х сервисов через docker-compose из списка ниже:

1. **mediawiki**
   Движок вики.
2. **redmine**
   Система учёта багов, т.е. баг-трекер.
3. **wordpress**
   Популярная система управления контентом.
4. **drupal**
   Ещё одна популярная система управления контентом.
5. **moodle**
   Система для обучения, на которой построена <https://lms.ulstu.ru>.
6. **gitea**
   Сервис для хранения репозиториев git, на котором работает этот репозиторий.

Требования и docker-compose:

* Несколько контейнеров.
* Хотя бы один volume.
* Хотя бы один порт, проброшенный на хост.


## Ход работы 

1. Установить Docker dekstop
2. В терминале с помощью команды "docker --version" проверить корректность установки
3. Командой "docker-compose --version" проверить версию Docker-Compose
4. Развернуть сервисы

## Сервисы:

## WordPress:

1. Эта строка отвечает за образ сборки:

image: wordpress:latest

Используем последний официальный образ WordPress.

2. Задание имени контейнера:

container_name: wordpress

Устанавливается имя контейнера как wordpress.

3. Проброс портов:

Порт 80 контейнера пробрасывается на порт 8080 хоста.

4. Тома для хранения данных:

volumes:
  - wordpress_data:/var/www/html

Том wordpress_data монтируется в директорию /var/www/html контейнера для хранения данных WordPress.

5. Переменные окружения для WordPress:

environment:
  WORDPRESS_DB_HOST: db
  WORDPRESS_DB_USER: example_user
  WORDPRESS_DB_PASSWORD: example_password
  WORDPRESS_DB_NAME: example_db

Здесь задаются параметры для подключения к базе данных:

WORDPRESS_DB_HOST: адрес базы данных (контейнер с именем db).
WORDPRESS_DB_USER: имя пользователя базы данных.
WORDPRESS_DB_PASSWORD: пароль пользователя базы данных.
WORDPRESS_DB_NAME: имя базы данных.

6. Зависимость от базы данных:

depends_on: db

Указываем, что WordPress зависит от контейнера с базой данных (db), который должен запуститься первым.

## Redmine:

1. Эта строка отвечает за образ сборки:

image: redmine:latest

Используем последний официальный образ Redmine.

2. Задание имени контейнера:

container_name: redmine

Устанавливается имя контейнера как redmine.

3. Проброс портов:

ports:"8090:3000"

Порт 3000 контейнера пробрасывается на порт 8090 хоста

4. Переменные окружения для Redmine:

environment:
  REDMINE_DB_MYSQL: redmine_db
  REDMINE_DB_USERNAME: redmine_user
  REDMINE_DB_PASSWORD: redmine_password

Задаются параметры для подключения к базе данных:

REDMINE_DB_MYSQL: имя контейнера базы данных.
REDMINE_DB_USERNAME: имя пользователя базы данных.
REDMINE_DB_PASSWORD: пароль пользователя базы данных.

5. Зависимость от базы данных:


depends_on:
  - redmine_db

Redmine зависит от контейнера с базой данных redmine_db.

## Gitea:

1. Эта строка отвечает за образ сборки:

image: gitea/gitea:latest

Используем последний официальный образ Gitea.

2. Задание имени контейнера:

container_name: gitea

Устанавливается имя контейнера как gitea.

3. Проброс портов:

ports:"8091:3000"

Порт 3000 контейнера пробрасывается на порт 8091 хоста 

4. Тома для хранения данных:

volumes:
  - gitea_data:/data

Том gitea_data монтируется в директорию /data контейнера для хранения данных Gitea.

5. Переменные окружения для Gitea:

environment:
  - USER_UID=1000
  - USER_GID=1000


## Ссылка на видео: 

https://drive.google.com/file/d/1ytamJUnLILeb3UfDOzYtiQJxiXHcWpT0/view?usp=sharing