bitnami/mediawiki
🛑 DEPRECATED Bitnami Docker Image for MediaWiki
5M+
The Mediawiki container is now deprecated. This image will no longer be released in our catalog, but already-released container images will persist in the registries.
After some months, this repository will be removed in favor of bitnami/mediawiki-archived where all existing images can be found.
MediaWiki is the free and open source wiki software that powers Wikipedia. Used by thousands of organizations, it is extremely powerful, scalable software and a feature-rich wiki implementation.
Overview of MediaWiki Trademarks: This software listing is packaged by Bitnami. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement.
docker run --name mediawiki bitnami/mediawiki:latest
Warning: This quick setup is only intended for development environments. You are encouraged to change the insecure default credentials and check out the available configuration options in the Environment Variables section for a more secure d eployment.
Looking to use MediaWiki in production? Try VMware Tanzu Application Catalog, the commercial edition of the Bitnami catalog.
Deploying Bitnami applications as Helm Charts is the easiest way to get started with our applications on Kubernetes. Read more about the installation in the Bitnami MediaWiki Chart GitHub repository.
Bitnami containers can be used with Kubeapps for deployment and management of Helm Charts in clusters.
Non-root container images add an extra layer of security and are generally recommended for production environments. However, because they run as a non-root user, privileged tasks are typically off-limits. Learn more about non-root containers in our docs.
Dockerfile
linksLearn more about the Bitnami tagging policy and the difference between rolling tags and immutable tags in our documentation page.
You can see the equivalence between the different tags by taking a look at the tags-info.yaml
file present in the branch folder, i.e bitnami/ASSET/BRANCH/DISTRO/tags-info.yaml
.
Subscribe to project updates by watching the bitnami/containers GitHub repo.
The recommended way to get the Bitnami MediaWiki Docker Image is to pull the prebuilt image from the Docker Hub Registry.
docker pull bitnami/mediawiki:latest
To use a specific version, you can pull a versioned tag. You can view the list of available versions in the Docker Hub Registry.
docker pull bitnami/mediawiki:[TAG]
If you wish, you can also build the image yourself by cloning the repository, changing to the directory containing the Dockerfile and executing the docker build
command. Remember to replace the APP
, VERSION
and OPERATING-SYSTEM
path placeholders in the example command below with the correct values.
git clone https://github.com/bitnami/containers.git
cd bitnami/APP/VERSION/OPERATING-SYSTEM
docker build -t bitnami/APP:latest .
MediaWiki requires access to a MySQL or MariaDB database to store information. We'll use the Bitnami Docker Image for MariaDB for the database requirements.
Step 1: Create a network
docker network create mediawiki-network
Step 2: Create a volume for MariaDB persistence and create a MariaDB container
$ docker volume create --name mariadb_data
docker run -d --name mariadb \
--env ALLOW_EMPTY_PASSWORD=yes \
--env MARIADB_USER=bn_mediawiki \
--env MARIADB_PASSWORD=bitnami \
--env MARIADB_DATABASE=bitnami_mediawiki \
--network mediawiki-network \
--volume mariadb_data:/bitnami/mariadb \
bitnami/mariadb:latest
Step 3: Create volumes for MediaWiki persistence and launch the container
$ docker volume create --name mediawiki_data
docker run -d --name mediawiki \
-p 8080:8080 -p 8443:8443 \
--env ALLOW_EMPTY_PASSWORD=yes \
--env MEDIAWIKI_DATABASE_USER=bn_mediawiki \
--env MEDIAWIKI_DATABASE_PASSWORD=bitnami \
--env MEDIAWIKI_DATABASE_NAME=bitnami_mediawiki \
--network mediawiki-network \
--volume mediawiki_data:/bitnami/mediawiki \
bitnami/mediawiki:latest
Access your application at http://your-ip/
curl -sSL https://raw.githubusercontent.com/bitnami/containers/main/bitnami/mediawiki/docker-compose.yml > docker-compose.yml
docker-compose up -d
Please be aware this file has not undergone internal testing. Consequently, we advise its use exclusively for development or testing purposes. For production-ready deployments, we highly recommend utilizing its associated Bitnami Helm chart.
If you detect any issue in the docker-compose.yaml
file, feel free to report it or contribute with a fix by following our Contributing Guidelines.
If you remove the container all your data will be lost, and the next time you run the image the database will be reinitialized. To avoid this loss of data, you should mount a volume that will persist even after the container is removed.
For persistence you should mount a directory at the /bitnami/mediawiki
path. If the mounted directory is empty, it will be initialized on the first run. Additionally you should mount a volume for persistence of the MariaDB data.
The above examples define the Docker volumes named mariadb_data and mediawiki_data. The MediaWiki application state will persist as long as volumes are not removed.
To avoid inadvertent removal of volumes, you can mount host directories as data volumes. Alternatively you can make use of volume plugins to host the volume data.
This requires a minor change to the docker-compose.yml
file present in this repository:
mariadb:
...
volumes:
- - 'mariadb_data:/bitnami/mariadb'
+ - /path/to/mariadb-persistence:/bitnami/mariadb
...
mediawiki:
...
volumes:
- - 'mediawiki_data:/bitnami/mediawiki'
+ - /path/to/mediawiki-persistence:/bitnami/mediawiki
...
-volumes:
- mariadb_data:
- driver: local
- mediawiki_data:
- driver: local
NOTE: As this is a non-root container, the mounted files and directories must have the proper permissions for the UID
1001
.
Step 1: Create a network (if it does not exist)
docker network create mediawiki-network
Step 2. Create a MariaDB container with host volume
docker run -d --name mariadb \
--env ALLOW_EMPTY_PASSWORD=yes \
--env MARIADB_USER=bn_mediawiki \
--env MARIADB_PASSWORD=bitnami \
--env MARIADB_DATABASE=bitnami_mediawiki \
--network mediawiki-network \
--volume /path/to/mariadb-persistence:/bitnami/mariadb \
bitnami/mariadb:latest
Step 3. Create the MediaWiki container with host volumes
docker run -d --name mediawiki \
-p 8080:8080 -p 8443:8443 \
--env ALLOW_EMPTY_PASSWORD=yes \
--env MEDIAWIKI_DATABASE_USER=bn_mediawiki \
--env MEDIAWIKI_DATABASE_PASSWORD=bitnami \
--env MEDIAWIKI_DATABASE_NAME=bitnami_mediawiki \
--network mediawiki-network \
--volume /path/to/mediawiki-persistence:/bitnami/mediawiki \
bitnami/mediawiki:latest
Customizable environment variables
Name | Description | Default Value |
---|---|---|
MEDIAWIKI_DATA_TO_PERSIST | Files to persist relative to the MediaWiki installation directory. To provide multiple values, separate them with a whitespace. | images extensions skins LocalSettings.php |
MEDIAWIKI_SKIP_BOOTSTRAP | Whether to perform initial bootstrapping for the application. | nil |
MEDIAWIKI_WIKI_NAME | MediaWiki wiki name. | Bitnami MediaWiki |
MEDIAWIKI_WIKI_PREFIX | Base path to use for MediaWiki wiki URLs. | /wiki |
MEDIAWIKI_SCRIPT_PATH | Base path to use for MediaWiki script URLs. | nil |
MEDIAWIKI_HOST | MediaWiki application host. | localhost |
MEDIAWIKI_ENABLE_HTTPS | Whether to use HTTPS by default. | no |
MEDIAWIKI_EXTERNAL_HTTP_PORT_NUMBER | Port to used by MediaWiki to generate URLs and links when accessing using HTTP. | 80 |
MEDIAWIKI_EXTERNAL_HTTPS_PORT_NUMBER | Port to used by MediaWiki to generate URLs and links when accessing using HTTPS. | 443 |
MEDIAWIKI_USERNAME | MediaWiki user name. | user |
MEDIAWIKI_PASSWORD | MediaWiki user password. | bitnami123 |
MEDIAWIKI_EMAIL | MediaWiki user e-mail address. | user@example.com |
MEDIAWIKI_SMTP_HOST | MediaWiki SMTP server host. | nil |
MEDIAWIKI_SMTP_HOST_ID | MediaWiki SMTP server host ID. It is a MediaWiki-specific setting used to build the Message-ID email header. If not provided, it will default to the value of MEDIAWIKI_SMTP_HOST. | $MEDIAWIKI_SMTP_HOST |
MEDIAWIKI_SMTP_PORT_NUMBER | MediaWiki SMTP server port number. | nil |
MEDIAWIKI_SMTP_USER | MediaWiki SMTP server user (if being used). | nil |
MEDIAWIKI_SMTP_PASSWORD | MediaWiki SMTP server user password (if being used). | nil |
MEDIAWIKI_ENABLE_SMTP_AUTH | Whether to use authentication for SMTP server. Valid values: yes , no . | yes |
MEDIAWIKI_DATABASE_HOST | Database server host. | mariadb |
MEDIAWIKI_DATABASE_PORT_NUMBER | Database server port. | 3306 |
MEDIAWIKI_DATABASE_NAME | Database name. | bitnami_mediawiki |
MEDIAWIKI_DATABASE_USER | Database user name. | bn_mediawiki |
MEDIAWIKI_DATABASE_PASSWORD | Database user password. | nil |
MEDIAWIKI_SKIP_CONFIG_VALIDATION | Skip config validation during startup. Allows the use of deprecated values in MediaWiki configuration file. | no |
Read-only environment variables
Name | Description | Value |
---|---|---|
MEDIAWIKI_BASE_DIR | MediaWiki installation directory. | ${BITNAMI_ROOT_DIR}/mediawiki |
MEDIAWIKI_CONF_FILE | Configuration file for MediaWiki. | ${MEDIAWIKI_BASE_DIR}/LocalSettings.php |
MEDIAWIKI_VOLUME_DIR | MediaWiki directory for mounted configuration files. | ${BITNAMI_VOLUME_DIR}/mediawiki |
PHP_DEFAULT_MEMORY_LIMIT | Default PHP memory limit. | 256M |
When you start the MediaWiki image, you can adjust the configuration of the instance by passing one or more environment variables either on the docker-compose file or on the docker run
command line. If you want to add a new environment variable:
docker-compose.yml
file present in this repository:mediawiki:
...
environment:
- MEDIAWIKI_PASSWORD=my_password
...
For manual execution add a --env
option with each variable and value:
docker run -d --name mediawiki -p 80:8080 -p 443:8443 \
--env MEDIAWIKI_PASSWORD=my_password \
--network mediawiki-tier \
--volume /path/to/mediawiki-persistence:/bitnami/mediawiki \
bitnami/mediawiki:latest
Example
This would be an example of SMTP configuration using a GMail account:
docker-compose.yml
file present in this repository: mediawiki:
...
environment:
- MEDIAWIKI_DATABASE_USER=bn_mediawiki
- MEDIAWIKI_DATABASE_NAME=bitnami_mediawiki
- ALLOW_EMPTY_PASSWORD=yes
- MEDIAWIKI_SMTP_HOST=smtp.gmail.com
- MEDIAWIKI_SMTP_HOST_ID=mydomain.com
- MEDIAWIKI_SMTP_PORT=587
- MEDIAWIKI_SMTP_USER=your_email@gmail.com
- MEDIAWIKI_SMTP_PASSWORD=your_password
...
For manual execution:
docker run -d --name mediawiki -p 80:8080 -p 443:8443 \
--env MEDIAWIKI_DATABASE_USER=bn_mediawiki \
--env MEDIAWIKI_DATABASE_NAME=bitnami_mediawiki \
--env MEDIAWIKI_SMTP_HOST=smtp.gmail.com \
--env MEDIAWIKI_SMTP_HOST_ID=mydomain.com \
--env MEDIAWIKI_SMTP_PORT=587 \
--env MEDIAWIKI_SMTP_USER=your_email@gmail.com \
--env MEDIAWIKI_SMTP_PASSWORD=your_password \
--network mediawiki-tier \
--volume /path/to/mediawiki-persistence:/bitnami/mediawiki \
bitnami/mediawiki:latest
If you require better quality thumbnails for your uploaded images, you may want to install imagemagick instead of using GD. To do so you can build your own docker image adding the imagemagick
system package. Since we are using a non-root container, we have to swap the user to root to install imagemagick and it's requirements.
Create the following Dockerfile
FROM bitnami/mediawiki:latest
USER root
RUN install_packages imagemagick
USER 1001
Build the docker image
docker build -t bitnami/mediawiki:imagemagick .
Edit the docker-compose.yml to use the docker image built in the previous step.
Finally exec into your MediaWiki container and edit the file /opt/bitnami/mediawiki/LocalSettings.php as described here in order to start using imagemagick.
You can follow these steps in order to migrate it to this container:
Export the data from your SOURCE installation: (assuming an installation in /opt/bitnami
directory)
mysqldump -u root -p bitnami_mediawiki > ~/backup-mediawiki-database.sql
gzip -c ~/backup-mediawiki-database.sql > ~/backup-mediawiki-database.sql.gz
cd /opt/bitnami/apps/mediawiki/htdocs/
tar cfz ~/backup-mediawiki-extensions.tar.gz extensions
tar cfz ~/backup-mediawiki-images.tar.gz images
tar cfz ~/backup-mediawiki-skins.tar.gz skins
Copy the backup files to your TARGET installation:
scp ~/backup-mediawiki-* YOUR_USERNAME@TARGET_HOST:~
Create the MediaWiki Container as described in the section How to use this Image (Using Docker Compose)
Wait for the initial setup to finish. You can follow it with
docker-compose logs -f mediawiki
and press Ctrl-C
when you see this:
nami INFO mediawiki successfully initialized
Starting mediawiki ...
Stop Apache:
docker-compose exec mediawiki nami stop apache
Obtain the password used by MediaWiki to access the database in order avoid reconfiguring it:
docker-compose exec mediawiki bash -c 'cat /opt/bitnami/mediawiki/LocalSettings.php | grep wgDBpassword'
Restore the database backup: (replace ROOT_PASSWORD below with your MariaDB root password)
cd ~
docker-compose exec mariadb mysql -u root -pROOT_PASSWORD
MariaDB [(none)]> drop database bitnami_mediawiki;
MariaDB [(none)]> create database bitnami_mediawiki;
MariaDB [(none)]> grant all privileges on bitnami_mediawiki.* to 'bn_mediawiki'@'%' identified by 'PASSWORD_OBTAINED_IN_STEP_6';
MariaDB [(none)]> exit
gunzip -c ./backup-mediawiki-database.sql.gz | docker exec -i $(docker-compose ps -q mariadb) mysql -u root bitnami_mediawiki -pROOT_PASSWORD
Restore extensions/images/skins directories from backup:
cat ./backup-mediawiki-extensions.tar.gz | docker exec -i $(docker-compose ps -q mediawiki) bash -c 'cd /bitnami/mediawiki/ ; tar -xzvf -'
cat ./backup-mediawiki-images.tar.gz | docker exec -i $(docker-compose ps -q mediawiki) bash -c 'cd /bitnami/mediawiki/ ; tar -xzvf -'
cat ./backup-mediawiki-skins.tar.gz | docker exec -i $(docker-compose ps -q mediawiki) bash -c 'cd /bitnami/mediawiki/ ; tar -xzvf -'
Fix MediaWiki directory permissions:
docker-compose exec mediawiki chown -R daemon:daemon /bitnami/mediawiki
Restart Apache:
docker-compose exec mediawiki nami start apache
The Bitnami MediaWiki Docker image sends the container logs to stdout
. To view the logs:
docker logs mediawiki
Or using Docker Compose:
docker-compose logs mediawiki
You can configure the containers logging driver using the --log-driver
option if you wish to consume the container logs differently. In the default configuration docker uses the json-file
driver.
To backup your data, configuration and logs, follow these simple steps:
Step 1: Stop the currently running container
docker stop mediawiki
Or using Docker Compose:
docker-compose stop mediawiki
Note: the README for this image is longer than the DockerHub length limit of 25000, so has been trimmed. The full README can be found at https://github.com/bitnami/containers/blob/main/bitnami/mediawiki/README.md