Задание:

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>

Последнее изменение: четверг, 15 февраля 2024, 18:00