forked from Alexey/DAS_2024_1
Compare commits
1 Commits
vaksman_va
...
borschevsk
| Author | SHA1 | Date | |
|---|---|---|---|
| ec21e89033 |
61
borschevskaya_anna_lab_1/README.md
Normal file
61
borschevskaya_anna_lab_1/README.md
Normal file
@@ -0,0 +1,61 @@
|
||||
# Отчет. Лабораторная работа 1
|
||||
|
||||
В рамках лабораторной работы с помощью технологии контейнеризации docker были развернуты сервисы:
|
||||
- Redmine - система баг-трекинга
|
||||
- Postgres - СУБД
|
||||
- RabbitMQ - брокер сообщений
|
||||
|
||||
## Описание
|
||||
В docker-compose.yml файле описаны настройки для запуска трех выбранных сервисов в контейнерах. Для большинства строк файла оставлены
|
||||
комментарии, объясняющие содержимое файла.
|
||||
|
||||
Стоит отметить, для сервиса Redmine было принято решение в качестве сервера баз данных не использовать базу данных по умолчанию - SQLite,
|
||||
а поднять внешний сервер баз данных Postgres, который был запущен в рамках этого же файла docker-compose.yml.
|
||||
|
||||
Для того, чтобы при старте postgres уже была создана база данных для Redmine, а также пользователь, под учетной записью
|
||||
которого будет работать Redmine, был написан скрипт init-database.sh с использованием bash и sql:
|
||||
```
|
||||
# Создаем пользователя redmine и БД redminedb
|
||||
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
|
||||
CREATE USER redmine WITH PASSWORD 'redmine-password';
|
||||
CREATE DATABASE redminedb;
|
||||
GRANT ALL PRIVILEGES ON DATABASE redminedb TO redmine;
|
||||
EOSQL
|
||||
|
||||
# Даем права на схему public
|
||||
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USERNAME" -d redminedb <<-EOSQL
|
||||
ALTER SCHEMA public OWNER TO redmine;
|
||||
GRANT ALL ON SCHEMA public TO redmine;
|
||||
EOSQL
|
||||
```
|
||||
|
||||
Этот скрипт монтируется в директорию контейнера postgres ``docker-entrypoint-initdb.d``, которая является специальной точкой входа
|
||||
для инициализации БД и содержит соответствующие скрипты.
|
||||
|
||||
## Как запустить
|
||||
Для того, чтобы запустить сервисы, необходимо выполнить следующие действия:
|
||||
1. Установить и запустить Docker Engine или Docker Desktop (включает в себя Docker Engine и предоставляет UI)
|
||||
2. Через консоль перейти в папку, в которой расположен файл docker-compose.yml
|
||||
3. Выполнить команду:
|
||||
```
|
||||
docker compose up -d
|
||||
```
|
||||
В случае успешного запуска всех контейнеров в консоли будет выведено следующее сообщение:
|
||||
```
|
||||
[+] Running 3/3
|
||||
✔ Container rabbitmq Started 0.8s
|
||||
✔ Container redmine Started 1.2s
|
||||
✔ Container postgres Started 0.5s
|
||||
```
|
||||
Также будет создана папка postgres_data, которая монтируется в контейнере postgres
|
||||
|
||||
Мы также можем увидеть статус всех запущенных контейнеров, если выполним команду:
|
||||
```
|
||||
docker ps
|
||||
```
|
||||
Или обратившись к логам каждого из контейнеров:
|
||||
``
|
||||
docker logs <container_name>
|
||||
``
|
||||
## Видео-отчет
|
||||
Работоспособность лабораторной работы можно оценить в следующем [видео](https://disk.yandex.ru/d/15QhUl3KQYSavA).
|
||||
34
borschevskaya_anna_lab_1/docker-compose.yml
Normal file
34
borschevskaya_anna_lab_1/docker-compose.yml
Normal file
@@ -0,0 +1,34 @@
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:latest # название и версия образа docker
|
||||
container_name: postgres # название контейнера
|
||||
environment: # блок переменных окружения, которые будут использованы для запуска и настройки
|
||||
POSTGRES_USERNAME: postgres # имя пользователя супер-пользователя СУБД
|
||||
POSTGRES_PASSWORD: postgres-admin # имя пользователя супер-пользователя СУБД
|
||||
PGDATA: "/var/lib/postgresql/data/pgdata" # путь к директории, где Postgres будет хранить свои данные.
|
||||
ports:
|
||||
- "5432:5432" # пробрасываем стандартный порт для доступа к postgres
|
||||
volumes:
|
||||
- ./postgres_data:/var/lib/postgresql/data/ # монтируем локальную директорию в директорию внутри контейнера с данными базы данных
|
||||
- ./init-database.sh:/docker-entrypoint-initdb.d/init-database.sh # Монтирует скрипт инициализации базы данных в специальную директорию внутри контейнера.
|
||||
redmine:
|
||||
image: redmine
|
||||
container_name: redmine
|
||||
ports:
|
||||
- "8080:3000"
|
||||
environment:
|
||||
REDMINE_DB_POSTGRES: postgres # хост, на котором расположена база данных Postgres
|
||||
REDMINE_DB_USERNAME: redmine # имя пользователя для подключения к базе данных Redmine
|
||||
REDMINE_DB_DATABASE: redminedb # база данных, к которой будет подключаться Redmine
|
||||
REDMINE_DB_PASSWORD: redmine-password # пароль, который будет использоваться для подключения
|
||||
depends_on: # обозначаем зависимость запуска сервиса redmine от запуска сервиса postgres
|
||||
- postgres
|
||||
rabbitmq:
|
||||
container_name: rabbitmq
|
||||
image: rabbitmq:3-management
|
||||
environment:
|
||||
RABBITMQ_DEFAULT_USER: rabbit # переопределяем значения имя для пользователя, который создается по умолчанию
|
||||
RABBITMQ_DEFAULT_PASS: rabbit-password # переопределяем значения пароля для пользователя, который создается по умолчанию
|
||||
ports:
|
||||
- "15672:15672" # порт для доступа к веб-интерфейсу
|
||||
- "5672:5672" # порт для доступа через протокол AMQP к брокеру сообщений
|
||||
15
borschevskaya_anna_lab_1/init-database.sh
Normal file
15
borschevskaya_anna_lab_1/init-database.sh
Normal file
@@ -0,0 +1,15 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Создаем пользователя redmine и БД redminedb
|
||||
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
|
||||
CREATE USER redmine WITH PASSWORD 'redmine-password';
|
||||
CREATE DATABASE redminedb;
|
||||
GRANT ALL PRIVILEGES ON DATABASE redminedb TO redmine;
|
||||
EOSQL
|
||||
|
||||
# Даем права на схему public
|
||||
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USERNAME" -d redminedb <<-EOSQL
|
||||
ALTER SCHEMA public OWNER TO redmine;
|
||||
GRANT ALL ON SCHEMA public TO redmine;
|
||||
EOSQL
|
||||
@@ -1,4 +0,0 @@
|
||||
DB_HOST = db
|
||||
DB_USER = wordpress
|
||||
DB_PASSWORD = wordpress
|
||||
DB_NAME = wordpress
|
||||
@@ -1 +0,0 @@
|
||||
mediawiki_data/
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 75 KiB |
@@ -1,129 +0,0 @@
|
||||
# Лабораторная работа №1 - Знакомство с docker и docker-compose
|
||||
|
||||
## Задание
|
||||
|
||||
Разверните 3 сервиса на выбор в контейнерах docker с помощью docker-compose, учитывая следующие требования:
|
||||
|
||||
* Несколько контейнеров.
|
||||
* Хотя бы один volume.
|
||||
* Хотя бы один порт, проброшенный на хост.
|
||||
* Разворачивание системы должно пройти до конца.
|
||||
|
||||
## Запуск
|
||||
|
||||
Введение в терминале команды:
|
||||
```
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
# Выбранные сервисы
|
||||
|
||||
1. ```db``` - самая новая версия БД MaraiDB
|
||||
|
||||
2. ```phpmyadmin``` - система управления базой данных
|
||||
|
||||
3. ```mediawiki``` - движок вики
|
||||
|
||||
4. ```wordpress``` - платформа для управления контентом
|
||||
|
||||
|
||||
## Описание работы:
|
||||
|
||||
Были развёрнуты следующие сервисы:
|
||||
|
||||
### phpmyadmin
|
||||
|
||||
```
|
||||
phpmyadmin:
|
||||
depends_on:
|
||||
- db
|
||||
image: phpmyadmin
|
||||
hostname: php_my_admin
|
||||
container_name: php_my_admin
|
||||
volumes: # см. конец файла
|
||||
- php_my_admin_data:/var/www/html
|
||||
ports:
|
||||
- 8080:80
|
||||
restart: always
|
||||
environment:
|
||||
PMA_ARBITRARY: 1
|
||||
TZ: "Europe/Moscow"
|
||||
PMA_HOST: ${DB_HOST}
|
||||
PMA_USER : ${DB_USER}
|
||||
PMA_PASSWORD : ${DB_PASSWORD}
|
||||
```
|
||||
|
||||
Этот код представляет собой часть файла конфигурации ```Docker Compose```, который используется для управления многоконтейнерными приложениями в Docker.
|
||||
|
||||
#### Объяснение работы кода:
|
||||
|
||||
Эта строка отвечает за образ сброки:
|
||||
```
|
||||
image: phpmyadmin
|
||||
```
|
||||
Задание имени контейнера:
|
||||
```
|
||||
container_name: php_my_admin
|
||||
```
|
||||
Проброс портов:
|
||||
```
|
||||
ports:
|
||||
- 8080:80
|
||||
```
|
||||
Тома для хранения данных:
|
||||
```
|
||||
volumes:
|
||||
- .php_my_admin_data:/var/www/html
|
||||
|
||||
```
|
||||
Переменные окружения для Drupal
|
||||
```
|
||||
environment:
|
||||
PMA_ARBITRARY: 1
|
||||
TZ: "Europe/Moscow"
|
||||
PMA_HOST: ${DB_HOST}
|
||||
PMA_USER : ${DB_USER}
|
||||
PMA_PASSWORD : ${DB_PASSWORD}
|
||||
|
||||
```
|
||||
Аналогично со другими сервисами:
|
||||
|
||||
### mediawiki
|
||||
|
||||
```
|
||||
image: mediawiki:latest # образ MediaWiki
|
||||
container_name: mediawiki_app
|
||||
volumes: # см. конец файла
|
||||
- ./mediawiki_data:/var/www/html/mediawiki
|
||||
ports:
|
||||
- "8088:80"
|
||||
restart: always
|
||||
```
|
||||
|
||||
### Wordpress
|
||||
|
||||
```
|
||||
depends_on:
|
||||
- db
|
||||
image: wordpress:latest
|
||||
hostname: wp_app
|
||||
container_name: wp_app
|
||||
volumes: # см. конец файла
|
||||
- wordpress_data:/var/www/html
|
||||
ports:
|
||||
- "8000:80"
|
||||
restart: always
|
||||
user: www-data
|
||||
environment: # секция настроек для подключения wordpress к БД
|
||||
TZ: "Europe/Moscow"
|
||||
WORDPRESS_DB_HOST: ${DB_HOST}
|
||||
WORDPRESS_DB_USER: ${DB_USER}
|
||||
WORDPRESS_DB_PASSWORD: ${DB_PASSWORD}
|
||||
WORDPRESS_DB_NAME: ${DB_NAME}
|
||||
```
|
||||
# Скриншот работы
|
||||
Панель консоли
|
||||

|
||||
|
||||
# ВК
|
||||
https://vk.com/video256017065_456239870?list=ln-qWUdZke5z53x940ZHv
|
||||
@@ -1,66 +0,0 @@
|
||||
services:
|
||||
db: # контейнер базы данных
|
||||
image: mariadb:latest # самая свежая версия MySql
|
||||
hostname: wp_database # хост контейнера внутри стистемы докер
|
||||
container_name: wp_database # имя контейнера с системе docker
|
||||
volumes: # см. конец файла
|
||||
- db_data:/var/lib/mysql
|
||||
restart: always
|
||||
environment: # cекция настроек для БД
|
||||
TZ: "Europe/Moscow"
|
||||
MYSQL_ROOT_PASSWORD: somewordpress
|
||||
MYSQL_DATABASE: ${DB_NAME}
|
||||
MYSQL_USER: ${DB_USER}
|
||||
MYSQL_PASSWORD: ${DB_PASSWORD}
|
||||
|
||||
phpmyadmin: # СУБД для БД
|
||||
depends_on: # запускаем после MySql
|
||||
- db
|
||||
image: phpmyadmin # скачиваем уже существующие образы для построения и запуска наших контейнеров
|
||||
hostname: php_my_admin
|
||||
container_name: php_my_admin
|
||||
volumes: # см. конец файла
|
||||
- php_my_admin_data:/var/www/html
|
||||
ports:
|
||||
- 8080:80
|
||||
restart: always
|
||||
environment:
|
||||
PMA_ARBITRARY: 1 # разрешение на подключения к любому серверу
|
||||
TZ: "Europe/Moscow"
|
||||
PMA_HOST: ${DB_HOST} # сразу заходим под нашими паролями и учёткой
|
||||
PMA_USER : ${DB_USER}
|
||||
PMA_PASSWORD : ${DB_PASSWORD}
|
||||
|
||||
wordpress: # контейнер wordpress
|
||||
depends_on: # запускаем после MySql
|
||||
- db
|
||||
image: wordpress:latest # самая свежая версия MySql
|
||||
hostname: wp_app
|
||||
container_name: wp_app
|
||||
volumes: # см. конец файла
|
||||
- wordpress_data:/var/www/html
|
||||
ports:
|
||||
- "8000:80"
|
||||
restart: always
|
||||
user: www-data
|
||||
environment: # секция настроек для подключения wordpress к БД
|
||||
TZ: "Europe/Moscow"
|
||||
WORDPRESS_DB_HOST: ${DB_HOST}
|
||||
WORDPRESS_DB_USER: ${DB_USER}
|
||||
WORDPRESS_DB_PASSWORD: ${DB_PASSWORD}
|
||||
WORDPRESS_DB_NAME: ${DB_NAME}
|
||||
|
||||
mediawiki: # контейнер mediawiki
|
||||
image: mediawiki:latest # образ MediaWiki
|
||||
container_name: mediawiki_app
|
||||
volumes: # см. конец файла
|
||||
- ./mediawiki_data:/var/www/html/mediawiki
|
||||
ports:
|
||||
- "8088:80"
|
||||
restart: always
|
||||
|
||||
volumes: # для локального хранения сессионных данных из работы контейнеров
|
||||
db_data: {}
|
||||
wordpress_data: {}
|
||||
php_my_admin_data: {}
|
||||
mediawiki: {}
|
||||
Reference in New Issue
Block a user