forked from Alexey/DAS_2024_1
Compare commits
2 Commits
kashin_max
...
bondarenko
| Author | SHA1 | Date | |
|---|---|---|---|
| f0083bc4cd | |||
|
|
0c3e973307 |
20
bondarenko_max_lab_1/.env
Normal file
20
bondarenko_max_lab_1/.env
Normal file
@@ -0,0 +1,20 @@
|
||||
# Database конфигурация
|
||||
POSTGRES_DB=mediawiki
|
||||
POSTGRES_USER=wikiuser
|
||||
POSTGRES_PASSWORD=secret
|
||||
|
||||
# MediaWiki конфигурация
|
||||
MEDIAWIKI_DB_NAME=mediawiki
|
||||
MEDIAWIKI_DB_USER=wikiuser
|
||||
MEDIAWIKI_DB_PASSWORD=secret
|
||||
|
||||
# WordPress конфигурация
|
||||
WORDPRESS_DB_NAME=wordpress
|
||||
WORDPRESS_DB_USER=wpuser
|
||||
WORDPRESS_DB_PASSWORD=secret
|
||||
|
||||
# Порты
|
||||
MEDIAWIKI_PORT=8080
|
||||
WORDPRESS_PORT=8081
|
||||
GITEA_WEB_PORT=3000
|
||||
GITEA_SSH_PORT=222
|
||||
0
bondarenko_max_lab_1/.gitignore
vendored
Normal file
0
bondarenko_max_lab_1/.gitignore
vendored
Normal file
20
bondarenko_max_lab_1/README.md
Normal file
20
bondarenko_max_lab_1/README.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# Лабораторная работа 1 - Знакомство с Docker и Docker Compose
|
||||
### ПИбд-42 || Бондаренко Максим
|
||||
|
||||
# Описание работы
|
||||
|
||||
## Цель
|
||||
Изучение современных технологий контейнеризации.
|
||||
|
||||
## Задачи
|
||||
1. Установка Docker Desktop.
|
||||
2. Принципы Docker.
|
||||
3. Изучение Docker Compose.
|
||||
4. Разворачивание сервисов.
|
||||
5. Оформление отчёта.
|
||||
|
||||
## Ход выполнения работы
|
||||
|
||||
## Инструкция по запуску
|
||||
|
||||
## Видео демонстрация работы
|
||||
58
bondarenko_max_lab_1/docker-compose.yml
Normal file
58
bondarenko_max_lab_1/docker-compose.yml
Normal file
@@ -0,0 +1,58 @@
|
||||
# Версия файла docker-compose, которую мы используем
|
||||
version: '3.8'
|
||||
|
||||
# Определение сервисов
|
||||
# Все последующие готовые образы в services будут взяты с Docker Hub -> image: название:версия
|
||||
# Далее в services будут использоваться переменные окружения из .env -> ${Переменная_среды}
|
||||
# Схема пробросов портов -> ports: внешний порт на хосте:внутренний порт в контейнере
|
||||
services:
|
||||
db:
|
||||
image: postgres:latest # Готовый образ postgres
|
||||
environment:
|
||||
- POSTGRES_DB=${POSTGRES_DB} # Имя БД
|
||||
- POSTGRES_USER=${POSTGRES_USER} # Пользователь БД
|
||||
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD} # Пароль пользователя БД
|
||||
volumes:
|
||||
- db_data:/var/lib/postgresql/data # Монтирование volume для постоянного хранения данных БД
|
||||
|
||||
mediawiki:
|
||||
image: mediawiki:latest # Готовый образ mediawiki
|
||||
ports:
|
||||
- "${MEDIAWIKI_PORT}:80" # Проброс порта
|
||||
volumes:
|
||||
- mediawiki_data:/var/www/html # Монтирование volume для постоянного хранения данных
|
||||
environment:
|
||||
- MEDIAWIKI_DB_HOST=db # Хост БД
|
||||
- MEDIAWIKI_DB_NAME=${MEDIAWIKI_DB_NAME} # Имя БД для MediaWiki
|
||||
- MEDIAWIKI_DB_USER=${MEDIAWIKI_DB_USER} # Пользователь БД
|
||||
- MEDIAWIKI_DB_PASSWORD=${MEDIAWIKI_DB_PASSWORD} # Пароль пользователя БД
|
||||
|
||||
wordpress:
|
||||
image: wordpress:latest # Готовый образ wordpress
|
||||
ports:
|
||||
- "${WORDPRESS_PORT}:80" # Проброс порта
|
||||
volumes:
|
||||
- wordpress_data:/var/www/html # Монтирование volume для постоянного хранения данных
|
||||
environment:
|
||||
- WORDPRESS_DB_HOST=db # Хост БД
|
||||
- WORDPRESS_DB_NAME=${WORDPRESS_DB_NAME} # Имя БД для WordPress
|
||||
- WORDPRESS_DB_USER=${WORDPRESS_DB_USER} # Пользователь БД
|
||||
- WORDPRESS_DB_PASSWORD=${WORDPRESS_DB_PASSWORD} # Пароль пользователя БД
|
||||
|
||||
gitea:
|
||||
image: gitea/gitea:latest # Готовый образ gitea
|
||||
ports:
|
||||
- "${GITEA_WEB_PORT}:3000" # Проброс веб-порта
|
||||
- "${GITEA_SSH_PORT}:22" # Проброс SSH-порта
|
||||
volumes:
|
||||
- gitea_data:/data # Монтирование volume для постоянного хранения данных
|
||||
environment:
|
||||
- USER_UID=1000 # UID пользователя внутри контейнера
|
||||
- USER_GID=1000 # GID пользователя внутри контейнера
|
||||
|
||||
# Определение volumes для хранения данных вне контейнеров
|
||||
volumes:
|
||||
mediawiki_data:
|
||||
wordpress_data:
|
||||
gitea_data:
|
||||
db_data:
|
||||
@@ -1,93 +0,0 @@
|
||||
# Кашин Максим ПИбд-42
|
||||
|
||||
## Описание
|
||||
|
||||
Этот проект разворачивает среду с базой данных MySQL, системами управления проектами Redmine и платформой для создания сайтов WordPress с использованием Docker Compose. Ниже приведены шаги для запуска и настройки.
|
||||
|
||||
## 0. Предварительные действия
|
||||
|
||||
Перед запуском Docker Compose выполнил следующие шаги:
|
||||
|
||||
1. Установил [Docker Desktop](https://www.docker.com/products/docker-desktop) для моей операционной системы.
|
||||
2. Настроил брандмауэр Windows и разрешил доступ Docker.
|
||||
3. Открыл PowerShell с правами администратора и выполнил следующие команды:
|
||||
```bash
|
||||
net start vmcompute
|
||||
wsl --set-default-version 2
|
||||
```
|
||||
|
||||
## 1. Структура и запуск сервиса
|
||||
|
||||
Файл `docker-compose.yml` содержит описание трех сервисов:
|
||||
- **db (MySQL)** – база данных;
|
||||
- **redmine (Redmine)** – система управления проектами;
|
||||
- **wordpress (WordPress)** – платформа для создания сайтов.
|
||||
|
||||
Запуск всех сервисов происходит через команду:
|
||||
```bash
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
## 2. Сервис MySQL
|
||||
|
||||
Сервис `db` представляет собой контейнер с MySQL версии 8.0.
|
||||
|
||||
- **Образ**: `mysql:8.0`
|
||||
- **Переменные окружения**:
|
||||
- `MYSQL_ROOT_PASSWORD` — пароль для пользователя root.
|
||||
- `MYSQL_DATABASE` — имя создаваемой базы данных (exampledb).
|
||||
- `MYSQL_USER` — имя пользователя базы данных (exampleuser).
|
||||
- `MYSQL_PASSWORD` — пароль пользователя базы данных (examplepass).
|
||||
- **Тома (volumes)**:
|
||||
- `db-data:/var/lib/mysql` — том для хранения данных базы данных.
|
||||
|
||||
Сервис MySQL необходим для работы как Redmine, так и WordPress.
|
||||
|
||||
## 3. Сервис Redmine
|
||||
|
||||
Сервис `redmine` представляет собой контейнер с системой управления проектами Redmine.
|
||||
|
||||
- **Образ**: `redmine`
|
||||
- **Порты**:
|
||||
- `8080:3000` — Redmine будет доступен по адресу http://localhost:8080.
|
||||
- **Переменные окружения**:
|
||||
- `REDMINE_DB_DATABASE` — имя базы данных (exampledb).
|
||||
- `REDMINE_DB_MYSQL` — имя хоста базы данных (db).
|
||||
- `REDMINE_DB_PASSWORD` — пароль для подключения к базе данных (example).
|
||||
- `REDMINE_SECRET_KEY_BASE` — секретный ключ для работы с сессиями.
|
||||
- **Тома (volumes)**:
|
||||
- `redmine:/usr/src/redmine/files` — том для хранения файлов Redmine.
|
||||
|
||||
## 4. Сервис WordPress
|
||||
|
||||
Сервис `wordpress` представляет собой контейнер с платформой WordPress.
|
||||
|
||||
- **Образ**: `wordpress`
|
||||
- **Порты**:
|
||||
- `8081:80` — WordPress будет доступен по адресу http://localhost:8081.
|
||||
- **Переменные окружения**:
|
||||
- `WORDPRESS_DB_HOST` — хост базы данных (db).
|
||||
- `WORDPRESS_DB_USER` — имя пользователя базы данных (exampleuser).
|
||||
- `WORDPRESS_DB_PASSWORD` — пароль для подключения к базе данных (examplepass).
|
||||
- `WORDPRESS_DB_NAME` — имя базы данных (exampledb).
|
||||
- **Тома (volumes)**:
|
||||
- `wordpress:/var/www/html` — том для хранения файлов WordPress.
|
||||
|
||||
## 5. Томa данных
|
||||
|
||||
Для хранения данных и постоянства контейнеров используются три тома:
|
||||
|
||||
- `wordpress` — для данных WordPress.
|
||||
- `db-data` — для данных MySQL.
|
||||
- `redmine` — для файлов Redmine.
|
||||
|
||||
## 6. Остановка сервисов
|
||||
|
||||
Для остановки и удаления всех контейнеров необходимо выполнить команду:
|
||||
```bash
|
||||
docker-compose down
|
||||
```
|
||||
|
||||
## 7. Ссылка на видео
|
||||
|
||||
[Видео-отчёт Кашин Максим ПИбд-42](https://disk.yandex.ru/i/O8L1qmk4PIbCvA)
|
||||
@@ -1,45 +0,0 @@
|
||||
version: '3.1' # Версия Docker Compose файла
|
||||
|
||||
services: # Определение сервисов, которые будут запускаться
|
||||
|
||||
db: # Сервис базы данных MySQL
|
||||
image: mysql:8.0 # Образ
|
||||
restart: always # Автоматический перезапуск контейнера
|
||||
environment: # Переменные окружения для конфигурации базы данных
|
||||
MYSQL_ROOT_PASSWORD: example
|
||||
MYSQL_DATABASE: exampledb
|
||||
MYSQL_USER: exampleuser
|
||||
MYSQL_PASSWORD: examplepass
|
||||
volumes: # Определение томов для сохранения данных базы данных
|
||||
- db-data:/var/lib/mysql
|
||||
|
||||
redmine: # redmine Система учёта багов, т.е. баг-трекер.
|
||||
image: redmine # Образ
|
||||
restart: always # Автоматический перезапуск контейнера
|
||||
ports:
|
||||
- 8080:3000 # Переадресация локального порта 8080 на порт 3000 в контейнере
|
||||
environment: # Переменные окружения для настройки Redmine (подключение к бд)
|
||||
REDMINE_DB_DATABASE: exampledb
|
||||
REDMINE_DB_MYSQL: db
|
||||
REDMINE_DB_PASSWORD: example
|
||||
REDMINE_SECRET_KEY_BASE: supersecretkey
|
||||
volumes: # Том для хранения данных Redmine
|
||||
- redmine:/usr/src/redmine/files
|
||||
|
||||
wordpress: # wordpress Популярная система управления контентом.
|
||||
image: wordpress # Образ
|
||||
restart: always # Автоматический перезапуск контейнера
|
||||
ports:
|
||||
- 8081:80 # Переадресация локального порта 8081 на порт 80 в контейнере
|
||||
environment: # Переменные окружения для настройки WordPress (подключение к бд)
|
||||
WORDPRESS_DB_HOST: db
|
||||
WORDPRESS_DB_USER: exampleuser
|
||||
WORDPRESS_DB_PASSWORD: examplepass
|
||||
WORDPRESS_DB_NAME: exampledb
|
||||
volumes: # Том для хранения данных WordPress
|
||||
- wordpress:/var/www/html
|
||||
|
||||
volumes: # Определение томов для хранения данных
|
||||
wordpress:
|
||||
db-data:
|
||||
redmine:
|
||||
@@ -1,50 +0,0 @@
|
||||
# Отчет по лабораторной работе 1
|
||||
|
||||
## Описание
|
||||
Docker Compose используется для одновременного управления несколькими контейнерами, входящими в состав приложения. Он позволяет хранить все настройки проекта в одном контейнере, что позволяет потом беспроблемно использовать те же настройки проекта на другом сервере. docker-compose.yml позволяет настраивать и документировать все зависимости служб приложения. В нем указываются образ, порт(который можно пробросить), окрущающие среды, томы и зависимости (если нужно).
|
||||
|
||||
## Описание docker-compose.yml
|
||||
Были выбраны следующие сервисы:
|
||||
|
||||
1. Postgres
|
||||
2. Redmine
|
||||
3. Gitea
|
||||
|
||||
В файле у каждого сервиса пробрасывается порт. Каждый сервис содержит том, который используются для хранения данных. Запуск Redmine и Gitea имеют зависимость от Postgres, чтобы они имели возможность накатить миграции и заполнить таблицы после создания базы. У каждого сервиса заполнен паарметр environment, где указываются данные для БД.
|
||||
|
||||
## Инструкция по запуску
|
||||
|
||||
1. Запустить приложение Docker Hub
|
||||
2. Открыть консоль с помощью команды cd перейти к папке, где находится файл docker-compose.yml
|
||||
3. Ввести команду для поднятия контейнеров
|
||||
```
|
||||
docker compose up -d
|
||||
```
|
||||
Дожидаемся запуска сервисов:
|
||||
```
|
||||
[+] Running 3/3
|
||||
✔ Container yakovleva_julia_lab_1-postgres-1 Started 0.5s
|
||||
✔ Container yakovleva_julia_lab_1-gitea-1 Started 1.2s
|
||||
✔ Container yakovleva_julia_lab_1-redmine-1 Started 1.1s
|
||||
```
|
||||
|
||||
4. Убедиться, что сервисы успешно запущены можно по команде:
|
||||
```
|
||||
docker compose ps
|
||||
```
|
||||
Отобразится таблица с запущенными сервисами:
|
||||
```
|
||||
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
|
||||
yakovleva_julia_lab_1-gitea-1 gitea/gitea:1.22.2 "/usr/bin/entrypoint…" gitea 19 minutes ago Up 6 seconds 22/tcp, 0.0.0.0:3002->3000/tcp
|
||||
yakovleva_julia_lab_1-postgres-1 postgres:16.4 "docker-entrypoint.s…" postgres 19 minutes ago Up 6 seconds 0.0.0.0:5433->5432/tcp
|
||||
yakovleva_julia_lab_1-redmine-1 redmine:latest "/docker-entrypoint.…" redmine 19 minutes ago Up 6 seconds 0.0.0.0:3003->3000/tcp
|
||||
```
|
||||
|
||||
Также можно посомтреть логи каждого севриса при вводе команды:
|
||||
```
|
||||
docker compose logs -ft (название сервиса)
|
||||
```
|
||||
-ft необходим для того, чтобы читать логи сервиса в реальном времени
|
||||
|
||||
## Видео
|
||||
[Видео](https://disk.yandex.ru/i/Ds2f4xO8vQ8XPA) работоспособности.
|
||||
@@ -1,45 +0,0 @@
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:16.4
|
||||
ports:
|
||||
- "5433:5432"
|
||||
environment:
|
||||
POSTGRES_USER: redmine
|
||||
POSTGRES_PASSWORD: redminepass
|
||||
POSTGRES_DB: redmine
|
||||
volumes:
|
||||
- ./postgres_data:/var/lib/postgresql/data # Volume для хранения данных PostgreSQL
|
||||
restart: always
|
||||
|
||||
redmine:
|
||||
image: redmine:latest
|
||||
ports:
|
||||
- "3003:3000"
|
||||
volumes:
|
||||
- ./redmine_data:/usr/src/redmine/files # Volume для хранения данных Redmine
|
||||
environment:
|
||||
REDMINE_DB_POSTGRES: postgres # Имя сервиса базы данных
|
||||
REDMINE_DB_USERNAME: redmine
|
||||
REDMINE_DB_PASSWORD: redminepass
|
||||
REDMINE_DB_DATABASE: redmine
|
||||
depends_on:
|
||||
- postgres
|
||||
restart: always
|
||||
|
||||
gitea:
|
||||
image: gitea/gitea:1.22.2
|
||||
ports:
|
||||
- "3002:3000" # Проброс порта для доступа к Gitea
|
||||
volumes:
|
||||
- ./gitea_data:/data # Volume для хранения данных Gitea
|
||||
environment:
|
||||
- USER_UID=1000
|
||||
- USER_GID=1000
|
||||
- GITEA__database__DB_TYPE=postgres
|
||||
- GITEA__database__HOST=postgres:5432
|
||||
- GITEA__database__NAME=gitea
|
||||
- GITEA__database__USER=gitea
|
||||
- GITEA__database__PASSWD=gitea_password
|
||||
depends_on:
|
||||
- postgres
|
||||
restart: always
|
||||
Reference in New Issue
Block a user