diff --git a/tukaeva_alfiya_lab_1/.env b/tukaeva_alfiya_lab_1/.env new file mode 100644 index 0000000..b022097 --- /dev/null +++ b/tukaeva_alfiya_lab_1/.env @@ -0,0 +1,4 @@ +DB_HOST = wp_database +DB_USER = wordpress +DB_PASSWORD = wordpress +DB_NAME = wordpress \ No newline at end of file diff --git a/tukaeva_alfiya_lab_1/Dockerfile b/tukaeva_alfiya_lab_1/Dockerfile new file mode 100644 index 0000000..2850456 --- /dev/null +++ b/tukaeva_alfiya_lab_1/Dockerfile @@ -0,0 +1,13 @@ +FROM wordpress:latest + +# Установка WP-CLI +RUN apt-get update && apt-get install -y less \ + && curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar \ + && chmod +x wp-cli.phar \ + && mv wp-cli.phar /usr/local/bin/wp + +# Копируем скрипт entrypoint +COPY entrypoint.sh /usr/local/bin/entrypoint.sh +RUN chmod +x /usr/local/bin/entrypoint.sh + +ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] \ No newline at end of file diff --git a/tukaeva_alfiya_lab_1/README.md b/tukaeva_alfiya_lab_1/README.md new file mode 100644 index 0000000..5dff343 --- /dev/null +++ b/tukaeva_alfiya_lab_1/README.md @@ -0,0 +1,137 @@ +# Лабораторная работа №1 - Знакомство с docker и docker-compose + +## Задание + +Нужно развернуть 3 сервиса в контейнерах docker через docker-compose. + +Необходимые требования: + +* Несколько контейнеров. +* Хотя бы один volume. +* Хотя бы один порт, проброшенный на хост. +* Разворачивание системы должно пройти до конца. + +## Запуск ЛР: + +Введем в терминале команду: +``` +docker-compose up -d +``` +## Использованные сервисы: + + 1. ```db``` - база данные MySQL + + 2. ```redmine``` - Система учёта багов, т.е. баг-трекер. + + 3. ```mediawiki``` - движок вики + + 4. ```wordpress``` - платформа для управления контентом + +## Описание программы: + +Развернутые сервисы: + +### wordpress + +``` +wordpress: # Определение сервиса WordPress + image: wordpress:latest # Используемый образ WordPress последней версии + containername: wp_app # Имя контейнера + restart: always + ports: # Настройка портов + - "8000:80" + environment: # Переменные окружения + WORDPRESSDBHOST: ${DBHOST} + WORDPRESSDBUSER: ${DBUSER} + WORDPRESSDBPASSWORD: ${DBPASSWORD} + WORDPRESSDBNAME: ${DBNAME} + WORDPRESSADMINUSER: admin + WORDPRESSADMINPASSWORD: adminpassword + WORDPRESSADMINEMAIL: admin@example.com + volumes: # Настройка томов + - wordpress_data:/var/www/html + dependson: # Зависимости + - db_wordpress # Зависит от сервиса MySQL + +``` +Эта строка отвечает за образ сброки: +``` +image: wordpress:latest +``` +Задание имени контейнера: +``` +containername: wp_app +``` +Проброс портов: +``` +ports: + - 8000:80 +``` +Тома для хранения данных: +``` +volumes: + - wordpress_data:/var/www/html + +``` +Переменные окружения +``` +environment: + WORDPRESSDBHOST: ${DBHOST} + WORDPRESSDBUSER: ${DBUSER} + WORDPRESSDBPASSWORD: ${DBPASSWORD} + WORDPRESSDBNAME: ${DBNAME} + WORDPRESSADMINUSER: admin + WORDPRESSADMINPASSWORD: adminpassword + WORDPRESSADMINEMAIL: admin@example.com + +``` +Зависимости + +``` +dependson: + - db_wordpress + +``` +Аналогично со другими сервисами: + +### mediawiki + +``` +mediawiki: # Определение сервиса MediaWiki + image: mediawiki:1.35 # Используемый образ MediaWiki версии 1.35 + ports: # Настройка портов + - "8080:80" + containername: mediawiki # Имя контейнера + volumes: # Настройка томов + - mediawiki_data:/var/www/html/images mediawiki: # Определение сервиса MediaWiki + image: mediawiki:1.35 # Используемый образ MediaWiki версии 1.35 + ports: # Настройка портов + - "8080:80" + containername: mediawiki # Имя контейнера + volumes: # Настройка томов + - mediawiki_data:/var/www/html/images + +``` + +### redmine + +``` + +redmine: # Определение сервиса Redmine + image: redmine:latest # Используемый образ Redmine последней версии + containername: redmine # Имя контейнера + ports: # Настройка портов + - "3000:3000" + volumes: # Настройка томов + - redmine_data:/usr/src/redmine/files + +``` + +# Скрины работы программы: + +Панель консоли +![](lab_1.png "") + +# Видео + +https://vk.com/video230744264_456239102 \ No newline at end of file diff --git a/tukaeva_alfiya_lab_1/docker-compose.yml b/tukaeva_alfiya_lab_1/docker-compose.yml new file mode 100644 index 0000000..681a721 --- /dev/null +++ b/tukaeva_alfiya_lab_1/docker-compose.yml @@ -0,0 +1,53 @@ +services: + mediawiki: # Определение сервиса MediaWiki + image: mediawiki:1.35 # Используемый образ MediaWiki версии 1.35 + ports: # Настройка портов + - "8080:80" + containername: mediawiki # Имя контейнера + volumes: # Настройка томов + - mediawiki_data:/var/www/html/images + + db_wordpress: # Определение сервиса MySQL для WordPress + image: mysql:5.7 # Используемый образ MySQL версии 5.7 + containername: wp_database # Имя контейнера + environment: # Переменные окружения + MYSQLROOTPASSWORD: rootsecret + MYSQLDATABASE: ${DBNAME} + MYSQLUSER: ${DBUSER} + MYSQLPASSWORD: ${DBPASSWORD} + volumes: # Настройка томов + - db_wordpress_data:/var/lib/mysql + + wordpress: # Определение сервиса WordPress + image: wordpress:latest # Используемый образ WordPress последней версии + containername: wp_app # Имя контейнера + restart: always + ports: # Настройка портов + - "8000:80" + user: www-data + environment: # Переменные окружения + WORDPRESSDBHOST: ${DBHOST} + WORDPRESSDBUSER: ${DBUSER} + WORDPRESSDBPASSWORD: ${DBPASSWORD} + WORDPRESSDBNAME: ${DBNAME} + WORDPRESSADMINUSER: admin + WORDPRESSADMINPASSWORD: adminpassword + WORDPRESSADMINEMAIL: admin@example.com + volumes: # Настройка томов + - wordpress_data:/var/www/html + dependson: # Зависимости + - db_wordpress # Зависит от сервиса MySQL + + redmine: # Определение сервиса Redmine + image: redmine:latest # Используемый образ Redmine последней версии + containername: redmine # Имя контейнера + ports: # Настройка портов + - "3000:3000" + volumes: # Настройка томов + - redmine_data:/usr/src/redmine/files + +volumes: # Определение томов + mediawiki_data: # ТОМ для MediaWiki + wordpress_data: # ТОМ для WordPress + db_wordpress_data: # ТОМ для MySQL + redmine_data: # ТОМ для Redmine \ No newline at end of file diff --git a/tukaeva_alfiya_lab_1/entrypoint.sh b/tukaeva_alfiya_lab_1/entrypoint.sh new file mode 100644 index 0000000..4d2aadd --- /dev/null +++ b/tukaeva_alfiya_lab_1/entrypoint.sh @@ -0,0 +1,15 @@ +#!/bin/bash +set -e + +# Ожидание готовности базы данных +until wp db check; do + echo "Ожидание базы данных..." + sleep 5 +done + +# Установка WordPress +if ! wp core is-installed; then + wp core install --url="http://localhost:8000" --title="Библиотека" --admin_user="admin" --admin_password="admin_password" --admin_email="admin@example.com" --skip-email +fi + +exec apache2-foreground \ No newline at end of file diff --git a/tukaeva_alfiya_lab_1/lab_1.png b/tukaeva_alfiya_lab_1/lab_1.png new file mode 100644 index 0000000..48fbc48 Binary files /dev/null and b/tukaeva_alfiya_lab_1/lab_1.png differ