Docker/Hub
Docker maintains a list of official images which "are a curated set of Docker repositories hosted on Docker Hub." These images are official to Docker and not to MediaWiki. The images meet Docker's best practices of what they believe makes a good base image, it does not fulfill all of the roles and capabilities that MediaWiki has to offer. The image intentionally includes only the minimal amount of software necessary to run MediaWiki. It is designed to be extended from rather than used directly.
The MediaWiki image can be found at:
https://hub.docker.com/_/mediawiki
The source code can be found at:
https://github.com/wikimedia/mediawiki-docker
When changes are made to this git repository, they must be deployed to Docker hub by modifying the configuration file in their repository:
https://github.com/docker-library/official-images/blob/master/library/mediawiki
Using on a single web server edit
A multi-server environment should use Kubernetes instead of Docker Compose. In fact, it may be better for a single server to use microk8s than Docker Compose (although for users operating in virtual machines, such as libxen or qubes appVM's, microk8s may not run well or at all).
Quick Start edit
- Install Docker
- Install Docker Compose
- Create a folder for your project.
- Create a
docker-compose.yml
with the sample contents. - Run
docker-compose up -d
. - After running the installer, add the
LocalSettings.php
file and mount it into the container by uncommenting the relevant line in yourdocker-compose.yml
.
Initial docker-compose.yml
edit
This sample assumes you will use a SQLite database. This makes MediaWiki available on port 80
.
version: '3.2' services: web: image: mediawiki ports: - 80:80 volumes: # - ./LocalSettings.php:/var/www/html/LocalSettings.php - database:/var/www/data - images:/var/www/html/images volumes: database: images:
Using for MediaWiki Development edit
Quick Start edit
- Install Docker
- Install Docker Compose
- Create a folder for your project.
- Create a
docker-compose.yml
with the sample contents. - Clone MediaWiki in a subfolder called
html
. - Install the PHP dependencies by running
docker run --rm --interactive --tty --volume $PWD/html:/app composer install
orcomposer install -d ./html
if you have composer installed. - Disable OPCache
- Run
docker-compose up
Sample docker-compose.yml
edit
This sample assumes you will use a SQLite database. This makes MediaWiki available on port 8888
.
version: '3.2' services: web: image: mediawiki ports: - 8888:80 volumes: - ./html:/var/www/html:cached - database:/var/www/data volumes: database:
Disabling OPCache edit
Create a .htaccess
file in the web root, typically html/.htaccess
with the following content:
php_flag opcache.enable Off
Adding a Database Server edit
This is a more complex example with an attached MariaDB server. MediaWiki should be configured to reach the database server at the database
hostname.
version: '3.2' 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 environment: MYSQL_DATABASE: mediawiki MYSQL_USER: wiki MYSQL_PASSWORD: P@ssw0rd MYSQL_RANDOM_ROOT_PASSWORD: 'yes' volumes: - dbvolume:/var/lib/mysql volumes: dbvolume: external: true images:
In order for a separate volume to store the database to have the correct name, we create it using docker:
docker volume create dbvolume
We are building and launching a stack of containers with the MediaWiki application and the database described in the wiki.yml file:
docker-compose -f wiki.yml up -d
After installation, proceed to LocalSettings.php and we throw it to wiki.yml. After that, go to wiki.yml and comment it out ./LocalSettings.php:/var/www/html/LocalSettings.php Downloading files from
the docker-compose environment:
docker-compose -f wiki.yml stop
docker-compose -f wiki.yml up -d