Задание:
6. Создайте в домашней директории пользователя altlinux файл wiki.yml для приложения MediaWiki.
- 1. Средствами docker compose должен создаваться стек контейнеров с приложением MediaWiki и базой данных
- 1. Используйте два сервиса
- 2. Основной контейнер MediaWiki должен называться wiki и использовать образ mediawiki
- 3. Файл LocalSettings.php с корректными настройками должен находиться в домашней папке пользователя altlinux и автоматически монтироваться в образ.
- 4. Контейнер с базой данных должен называться db и использовать образ mysql
- 5. Он должен создавать базу с названием mediawiki, доступную по стандартному порту, для пользователя wiki с паролем P@ssw0rd
- 6. База должна храниться в отдельном volume с названием dbvolume
- 7. База данных должна находиться в одной сети с приложением App2, но не должна быть доступна снаружи.
- 8. MediaWiki должна быть доступна извне через порт 80.
Выполнение:
ControlVM:
- В домашней директории пользователя altlinux создаём файл wiki.yml:
vim ~/wiki.yml
-
- содержимое:
version: '3'
services:
MediaWiki:
container_name: wiki
image: mediawiki
restart: always
ports:
- 80:80
links:
- database
volumes:
- images:/var/www/html/images
# - ./LocalSettings.php:/var/www/html/LocalSettings.php
database:
container_name: db
image: mysql
restart: always
environment:
MYSQL_DATABASE: mediawiki
MYSQL_USER: wiki
MYSQL_PASSWORD: P@ssw0rd
MYSQL_RANDOM_ROOT_PASSWORD: 'yes'
volumes:
- dbvolume:/var/lib/mysql
volumes:
images:
dbvolume:
external: true
где:
services — основной раздел, где мы будем создавать и описывать наши сервисы (контейнеры docker). В данном примере сервиса два: MediaWiki - для приложения mediawiki и database - для базы данных;
container_name — имя, которое получит созданный контейнер;
image — имя образа, который будет использоваться для создания контейнера;
restart — поведения контейнера при падении;
ports (внешняя публикация). С помощью данной опции мы можем указывать, на каких портах должен слушать контейнер и на какие порты должны пробрасываться запросы
environment — задаем переменные окружения;
volumes - проброс папок;
links - ссылайтесь на контейнеры в другом сервисе. Укажите либо имя сервиса, либо псевдоним ссылки (SERVICE:ALIAS), либо просто имя сервиса.
P.S.
После первоначальной настройки через Web-интерфейс с локального ПК загрузите LocalSettings.php в тот же каталог, что и эта wiki.yml и раскомментируйте следующую строку "# - ./LocalSettings.php:/var/www/html/LocalSettings.php" и используйте docker-compose для перезапуска службы mediawiki
- Чтобы отдельный volume для хранения базы данных имел правильное имя - создаём его средствами docker:
docker volume create dbvolume
- Выполняем сборку и запуск стека контейнеров с приложением MediaWiki и базой данных описанных в файле wiki.yml:
docker-compose -f wiki.yml up -d
- Проверяем:
- Переходим в браузер http://<внешний IP адрес ControlVM> для продолжения установки через веб-интерфейс - нажимаем set up the wiki:
- Выбираем необходимый Язык - нажимаем Далее:
- После успешной проверки внешней среды - нажимаем Далее:
- Заполняем параметры подключение к Базе Данных в соответствие с заданными переменными окружения в wiki.yml, которые соответствуют требованиям задания:
- Нажимаеем Далее:
- Заполняем необходимые сведения:
- После чего будет автоматически скачен файл LocalSettings.php - который необходимо передать на ControlVM в домашнюю директорию пользователя altlinux туда же где лежит wiki.yml:
- в данном примере можно выполнить передачу файла следующим образом:
scp LocalSettings.php altlinux@158.160.119.74:~/
- Проверяем:
- Раскомментируем строку в файле wiki.yml:
vim wiki.yml
- Перезапускаем сервисы средствами docker-compose:
docker-compose -f wiki.yml stop
docker-compose -f wiki.yml up -d
-
- результат:
- Проверяем доступ с локального ПК к http://<внешний IP адрес ControlVM>