forked from Alexey/DAS_2024_1
Compare commits
1 Commits
tsukanova_
...
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
tsukanova_irina_lab_1/.gitignore
vendored
1
tsukanova_irina_lab_1/.gitignore
vendored
@@ -1 +0,0 @@
|
||||
*data/
|
||||
@@ -1,32 +0,0 @@
|
||||
# Лабораторная работа №1 - Знакомство с docker и docker-compose
|
||||
|
||||
## Выбранные сервисы:
|
||||
1. WordPress - платформа для публикаций
|
||||
2. MySQL - база данных для WordPress
|
||||
3. MediaWiki - вики-движок
|
||||
|
||||
## Запуск
|
||||
Запуск производится посредством команды
|
||||
```docker-compose up -d```
|
||||
В консоль выведется информация о запуске:
|
||||
```
|
||||
[+] Running 4/4
|
||||
✔ Network tsukanova_irina_lab_1_app-network Created 0.1s
|
||||
✔ Container mediawiki_app Started 0.9s
|
||||
✔ Container mysql Started 0.8s
|
||||
✔ Container wordpress_app Started 1.2s
|
||||
```
|
||||
|
||||
## Содержимое docker-compose.yml
|
||||
У всех сервисов указан ```image``` - это шаблон среды для контейнера. Образ служит "базовой" версией, на основе которой создаются контейнеры.
|
||||
```container_name``` - можно указать, как будет называться контейнер.
|
||||
```ports``` - для проброса порта, чтобы можно было иметь доступ к сервису с хоста.
|
||||
```environment``` - для указания переменных окружения, которые передаются контейнеру при его запуске.
|
||||
```volumes``` - для организации постоянного хранилища данных контейнеров Docker.
|
||||
```networks``` - определяет, как контейнеры взаимодействуют между собой и с внешним миром через сети.
|
||||
|
||||
## Скриншот работы
|
||||
Docker Desktop:
|
||||

|
||||
|
||||
## [Видео](https://drive.google.com/file/d/170k0_yR2gbg3eCDSanJmGT8NXN3PkKSf/view?usp=sharing)
|
||||
@@ -1,52 +0,0 @@
|
||||
services: # определяет сервисы, которые будут запущены
|
||||
|
||||
db: # сервис базы данных
|
||||
image: mysql:8.0 # Образ MySQL
|
||||
container_name: mysql # имя для контейнера
|
||||
restart: always
|
||||
volumes:
|
||||
- ./db_data:/var/lib/postgres # Том для постоянного хранения данных
|
||||
ports:
|
||||
- "20001:3306" # порт для доступа к MySQL с хоста
|
||||
environment:
|
||||
MYSQL_DATABASE: lab1 # имя базы данных
|
||||
MYSQL_USER: user # имя пользовтеля
|
||||
MYSQL_PASSWORD: password # пароль пользователя
|
||||
MYSQL_ROOT_PASSWORD: password # пароль для root
|
||||
|
||||
networks:
|
||||
- app-network
|
||||
|
||||
|
||||
wordpress:
|
||||
image: wordpress:latest # образ WordPress
|
||||
container_name: wordpress_app
|
||||
environment:
|
||||
WORDPRESS_DB_HOST: db:3306 # имя хоста базы данных
|
||||
WORDPRESS_DB_USER: user # имя пользователя БД
|
||||
WORDPRESS_DB_PASSWORD: password # пароль пользователя
|
||||
WORDPRESS_DB_NAME: lab1 # имя базы данных
|
||||
ports:
|
||||
- "20002:80" # порт для доступа к WordPress
|
||||
volumes:
|
||||
- ./wordpress_data:/var/www/html/wordpress_data # для хранения данных WordPress
|
||||
depends_on:
|
||||
- db # WordPress запустится после запуска базы данных
|
||||
networks:
|
||||
- app-network
|
||||
|
||||
|
||||
mediawiki:
|
||||
image: mediawiki:latest # образ MediaWiki
|
||||
container_name: mediawiki_app
|
||||
ports:
|
||||
- "20003:80" # порт для доступа к MediaWiki
|
||||
volumes:
|
||||
- ./mediawiki_data:/var/www/html/mediawiki # для хранения данных MediaWiki
|
||||
networks:
|
||||
- app-network
|
||||
|
||||
|
||||
networks:
|
||||
app-network:
|
||||
driver: bridge # общая сеть для контейнеров
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 114 KiB |
Reference in New Issue
Block a user