# wiki.yml для приложения MediaWiki

#### Задание:

6\. Создайте в домашней директории пользователя altlinux файл wiki.yml для приложения MediaWiki.

* 1\. Средствами docker compose должен создаваться стек контейнеров с приложением MediaWiki и базой данных
  * 1\. Используйте два сервиса
  * 2\. Основной контейнер MediaWiki должен называться wiki и использовать образ mediawiki&#x20;
  * 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
```

* Проверяем:

<img src="https://sysahelper.ru/pluginfile.php/306/mod_page/content/2/image.png" alt="" height="137" width="895">

* Переходим в браузер **http\://<внешний IP адрес ControlVM>** для продолжения установки через веб-интерфейс - нажимаем **set up the wiki**:

<img src="https://sysahelper.ru/pluginfile.php/306/mod_page/content/2/image%20%281%29.png" alt="" height="361" width="954">

* Выбираем необходимый Язык - нажимаем **Далее**:

<img src="https://sysahelper.ru/pluginfile.php/306/mod_page/content/2/image%20%282%29.png" alt="" height="518" width="922">

* После успешной проверки внешней среды - нажимаем **Далее**:

<img src="https://sysahelper.ru/pluginfile.php/306/mod_page/content/2/image%20%283%29.png" alt="" height="493" width="921">

* Заполняем параметры подключение к Базе Данных в соответствие с заданными переменными окружения в **wiki.yml**, которые соответствуют требованиям задания:

<img src="https://sysahelper.ru/pluginfile.php/306/mod_page/content/2/image%20%284%29.png" alt="" height="774" width="915">

* Нажимаеем **Далее**:

![](https://sysahelper.ru/pluginfile.php/306/mod_page/content/2/image%20%285%29.png)

* Заполняем необходимые сведения:

<img src="https://sysahelper.ru/pluginfile.php/306/mod_page/content/2/image%20%286%29.png" alt="" height="562" width="919">

<img src="https://sysahelper.ru/pluginfile.php/306/mod_page/content/2/image%20%287%29.png" alt="" height="749" width="915">

<img src="https://sysahelper.ru/pluginfile.php/306/mod_page/content/2/image%20%288%29.png" alt="" height="540" width="913">

![](https://sysahelper.ru/pluginfile.php/306/mod_page/content/2/image%20%289%29.png)

* После чего будет автоматически скачен файл **LocalSettings.php** - который необходимо передать на **ControlVM** в домашнюю директорию пользователя **altlinux** туда же где лежит **wiki.yml**:

<img src="https://sysahelper.ru/pluginfile.php/306/mod_page/content/2/image%20%2810%29.png" alt="" height="427" width="913">

* в данном примере можно выполнить передачу файла следующим образом:

```
scp LocalSettings.php altlinux@158.160.119.74:~/
```

* Проверяем:

![](https://sysahelper.ru/pluginfile.php/306/mod_page/content/2/image%20%2811%29.png)

* Раскомментируем строку в файле **wiki.yml**:

```
vim wiki.yml
```

![](https://sysahelper.ru/pluginfile.php/306/mod_page/content/2/image%20%2812%29.png)

* Перезапускаем сервисы средствами **docker-compose**:

```
docker-compose -f wiki.yml stop
```

```
docker-compose -f wiki.yml up -d
```

* * результат:

![](https://sysahelper.ru/pluginfile.php/306/mod_page/content/2/image%20%2813%29.png)

* Проверяем доступ с локального ПК к **http\://<внешний IP адрес ControlVM>**

![](https://sysahelper.ru/pluginfile.php/306/mod_page/content/2/image%20%2814%29.png)

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://seraphim.gitbook.io/volodyazetkin2024gitbook/modul-v.-docker-compose-sozdanie-lokalnogo-docker-registry/wiki.yml-dlya-prilozheniya-mediawiki.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
