Skip to content

metakgp/metakgp-wiki

Repository files navigation

Metakgp Wiki Setup

Build Status

Dockerized for fun and profit.

New to Docker? See the Runbook for some useful recipes.

Note: This readme is for development only, refer to the Runbook for commands to use in production.

Contents

Installation instructions for prerequisites

Quick start

Create a .env file at the repo root and add all the secrets.

cp .env.template .env

Note: Required environment variables:

  • MYSQL_PASSWORD
  • SERVER_NAME
  • SERVER_PORT

Other variables inside .env.template are optional.

Start all the basic services

Note: Depending on how you installed docker, you might have to run the docker commands through sudo

docker-compose up --build -d

Monitor the output to make sure nothing failed.

docker-compose logs -f

Now you need to initialise the database. Pick one of the following options.

Option 1: Run the web installer

Remove LocalSettings.php

docker-compose exec php rm /srv/mediawiki/LocalSettings.php

Go to https://localhost:8080 and complete the web installation. The database user is metakgp_user and the database host is mysql-docker. All the other configuration should be exactly the same as your .env file.

After completing the installation, download the generated LocalSettings.php file and move it into place.

docker cp <path to downloaded LocalSettings.php> $(docker-compose ps -q php):/srv/mediawiki

Create the tables necessary for extensions.

docker-compose exec php php /srv/mediawiki/maintenance/update.php

Reload https://localhost:8080, you should see the main page.

Option 2: Restore from backup

Note: This is for production, no need to run this for development

Check the Runbook


Go to https://localhost:8080, you should see the main page.

Development

Compose configuration

docker-compose supports multiple configuration files. docker-compose.yml is the base config, and docker-compose.override.yml is the default override. This is set up so that while developing, you can just use docker-compose <command>, and it will work.

For production, we want to run some additional services (like backups), so we need to specify docker-compose.prod.yml as an additional override.

For integration tests, we want to make sure that volumes created during integration tests don't overwrite volumes being used for development. We use test/integration/docker-compose.test.yml as the override instead.

Overrides can be applied by using the -f option. See test/integration/run_tests.sh for an example.

docker-compose -f docker-compose.yml -f <another compose file>

Volumes

We use Docker volumes to persist data between container rebuilds (eg. mysql database), and to share data between containers (eg. mediawiki volume shared between nginx and php).

When rebuilding/restarting containers, keep in mind that volumes are not automatically recreated. If a volume already exists, it will be attached to the new container. If you want a "clean" build, you need to make sure any existing volumes are removed.

List volumes:

docker-compose volume ls

Remove the volumes you want to recreate:

docker-compose volume rm <volume name>

Todo

Check the issues dashboard.

Contributing

Please read CONTRIBUTING.md guide to know more.

Helping PRs

This section lists PRs that can be viewed as example for performing particular updates or maintenance tasks.

  • How to change captcha service used with ConfirmEdit extension. #56
  • How to upgrade mediawiki version. #60