▎Лабораторная работа №1 - Знакомство с Docker и Docker Compose

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

▎Задачи:

1. Установить Docker.

2. Изучить применение и принципы работы Docker.

3. Изучить утилиту Docker Compose и структуру файла docker-compose.yml.

4. Развернуть не менее трех различных сервисов с помощью Docker Compose.

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

Необходимо развернуть минимум три сервиса из предложенного списка:


1. Redmine - система учета багов (баг-трекер).

2. WordPress - популярная система управления контентом.

3. Gitea - сервис для хранения git-репозиториев.

▎Требования к Docker Compose:

• Несколько контейнеров.

• Хотя бы один volume.

• Хотя бы один проброшенный порт на хост.

Система должна быть развернута полностью, включая создание администратора и корректное функционирование, что будет подтверждено скриншотами.

▎Ход работы

1. Установил Docker Desktop на Windows.

2. Проверил установку с помощью команды docker --version.

3. Развернул сервисы (описаны ниже).

▎Объяснение работы кода:

▎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
   
   Параметры для подключения к базе данных.

6. Зависимость от базы данных:  
   depends_on: db - указывает, что WordPress зависит от контейнера базы данных (db).

▎Redmine:

1. Образ сборки:  
   image: redmine:latest - используется последний официальный образ Redmine.

   
2. Имя контейнера:  
   container_name: redmine - имя контейнера устанавливается как redmine.

   
3. Проброс портов:  
   ports:"8081:3000" - порт 3000 контейнера пробрасывается на порт 8081 хоста.

   
4. Переменные окружения для Redmine:  
   
   environment:
     REDMINE_DB_MYSQL: redmine_db
     REDMINE_DB_USERNAME: redmine_user
     REDMINE_DB_PASSWORD: redmine_password
   
   Параметры для подключения к базе данных.

5. Зависимость от базы данных:  
   depends_on: - redmine_db - Redmine зависит от контейнера с базой данных.

▎Gitea:

1. Образ сборки:  
   image: gitea/gitea:latest - используется последний официальный образ Gitea.

   
2. Имя контейнера:  
   container_name: gitea - имя контейнера устанавливается как gitea.

   
3. Проброс портов:  
   ports:"8082:3000" - порт 3000 контейнера пробрасывается на порт 8082 хоста.

   
4. Тома для хранения данных:  
   
   volumes:
     - gitea_data:/data

[Видео](https://disk.yandex.ru/d/JFWkukJKwbfhIw)