Как лучше всего добавлять расширения при использовании официального образа докера для MediaWiki?

Мы используем официальный образ Docker для MediaWiki и хотим иметь возможность добавлять дополнительные расширения MediaWiki. .

Вопросов:

  1. Каков следующий шаг, рекомендуемый здесь, если в настоящее время мы используем файл docker-compose ниже, когда мы монтируем тома на хосте? Чтобы создать новый образ, который обертывает официальный образ? Есть ли где-нибудь пример этого измененного нового изображения для добавления расширения mediawiki?
  2. Или мы можем просто смонтировать том расширений на хосте в текущем docker-compose и при необходимости внести какие-либо изменения в LocalSettings.php?

Эта ссылка на веб-сайте Docker относится к добавлению Расширения и библиотеки PHP, но мне не ясно, пытается ли это быть тем же самым ответом, если вы хотите добавить специальные расширения MediaWiki, поскольку в нем четко указано «Расширения PHP». Или на этой странице документации должно было быть написано «Расширения MediaWiki», даже если это подразумевает, что они написаны на PHP?

Вот наша текущая запись файла docker-compose для mediawiki:

mediawiki:
  image: mediawiki
  container_name: mediawiki_production
  mem_limit: 4g
  volumes:
    - /var/www/mediawiki/uploads:/var/www/html/uploads
    - /var/www/mediawiki/LocalSettings.php:/var/www/html/LocalSettings.php
  environment:
    - MEDIAWIKI_DB_NAME=
    - MEDIAWIKI_DB_HOST=
    - MEDIAWIKI_DB_USER=
    - MEDIAWIKI_DB_PASSWORD=
    - VIRTUAL_HOST=wiki.exmaple.com
    - TERM=xterm
  restart: always
  network_mode: bridge

Рассматриваемые нами расширения, которые не являются частью официального образа, в первую очередь (но хотели бы иметь масштабируемое решение для дальнейшего использования):

Были бы полезны любые примеры нижележащего образа докера, который использует официальный образ mediawiki в качестве «FROM» для включения расширения (-ий) mediawiki и обновленного docker-compose (если оба требуются), чтобы иметь возможность добавлять расширения mediawiki. Возможно, будет полезно объяснить, что нужно изменить, если само расширение mediawiki полагается на расширения или библиотеки php, которые еще не включены в базовый образ, а не на добавление расширения mediawiki, которое не полагается на какие-либо дополнительные расширения или библиотеки php.


person Streamline    schedule 13.03.2018    source источник


Ответы (1)


Как предложил OP, вам нужно создать изображение, которое обертывает официальный образ MediaWiki.

Напишите инструкции по созданию изображения с дополнительными расширениями

В качестве минимального примера мы создадим изображение, которое включает расширение EmbedVideo, которое не входит в состав MediaWiki, начиная с версии 1.31. Добавьте следующие инструкции в файл my-mediawiki/Dockerfile:

FROM mediawiki:latest

RUN git clone --depth 1 https://github.com/HydraWiki/mediawiki-embedvideo.git /var/www/html/extensions/EmbedVideo

Создайте образ

Превратите этот Dockerfile в образ, используя docker build:

$ docker build -t username/mediawiki ./my-mediawiki
Sending build context to Docker daemon  2.048kB
Step 1/2 : FROM mediawiki:latest
latest: Pulling from library/mediawiki
802b00ed6f79: Pull complete
# [lines omitted]
8b47ece631d8: Pull complete 
Digest: sha256:5922653b254073c6d6a535bbdb0101f8a5eadbf557e2f31d590c234001c55b60
Status: Downloaded newer image for mediawiki:latest
 ---> 27fe73856ca7
Step 2/2 : RUN git clone --depth 1 https://github.com/HydraWiki/mediawiki-embedvideo.git /var/www/html/extensions/EmbedVideo
 ---> Running in 30a411511341
Cloning into '/var/www/html/extensions/EmbedVideo'...
Removing intermediate container 30a411511341
 ---> 5b297228bb08
Successfully built 5b297228bb08
Successfully tagged username/mediawiki:latest

Протестируйте изображение

Протестируйте изображение с помощью docker run:

$ docker run --rm -p 8080:80 username/mediawiki

Пока этот контейнер работает, посетите localhost:8080 в веб-браузере. Вам будет предложено выполнить процедуру настройки. Когда вы перейдете на страницу параметров, расширение EmbedVideo будет включено в список расширений.

Выполните остальную настройку

Для запуска MediaWiki в докере требуются другие шаги, такие как предоставление файла LocalSettings.php и его подключение к базе данных. Следуйте официальной документации MediaWiki Docker, чтобы выполнить эти действия, заменив свое username/mediawiki изображение официальным mediawiki изображение.

Добавить дополнительные плагины

Можно установить несколько плагинов, добавив дополнительные RUN инструкции в конец my-mediawiki/Dockerfile. Например, чтобы добавить Scribunto, добавьте в конец файла следующее:

RUN git clone --depth 1 -b $MEDIAWIKI_BRANCH \
      https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Scribunto \
      /var/www/html/extensions/Scribunto \
      && chmod a+x /var/www/html/extensions/Scribunto/includes/engines/LuaStandalone/binaries/lua*_linux_*/lua

После изменения Dockerfile обновите изображение, используя:

docker build -t username/mediawiki ./my-mediawiki

Большинство расширений требуют изменения LocalSettings.php, и, как и Scribunto, некоторые потребуют выполнения дополнительных команд установки после загрузки (проверьте README каждого расширения). Сложные расширения, такие как VisualEditor, потребуют дополнительных контейнеров для запуска таких демонов, как Parsoid. Мои собственные Dockerfile и _ 19_ показано, как можно настроить другие плагины.

person Divinenephron    schedule 27.09.2018
comment
Выглядит неплохо. Я получил нечто подобное для более простых расширений, как вы говорите, и еще не завершил более сложное расширение VisualEditor. У вас есть ссылка на пример того, что требуется (установка, конфигурация, файл для создания докеров и т. Д.) Для реализации VisualEditor с дополнительными контейнерами для запуска Parsoid и т. Д., Как вы упомянули? - person Streamline; 04.10.2018
comment
Я сделал docker-compose.yml файл, в котором работал VisualEditor. Я свяжусь с ним в качестве примера, когда вернусь домой, хотя это произойдет не раньше ноября 18 :(. - person Divinenephron; 05.10.2018
comment
Я загрузил и установил ссылку на мою собственную конфигурацию по запросу @Streamline. - person Divinenephron; 03.11.2018