MediaWiki Docker[part two]
This is part two of my Media Wiki documenation[0]. It has been a while since I’ve looked at this matter, but I planed it to progrss for this.
We stopped with a running docker container with postgresql as the backend databases. However, this change was done manual. Hence, restarting the container would causes us to lose it. We need to persist this change now.
This is done by modfing the base of media wiki to include the psql extension[1] for PHP. Because I can’t change the upstream iamage, i’m going to build it locally. For this we create a new Dockerfile. That Dockerfile takes the media wiki images as the base and runs the command we did run before manual. We keep it with a subfolder of the Docker-compose file.
FROM mediawiki
RUN apt update && apt install -y libpq-dev
RUN docker-php-ext-install pgsql
RUN docker-php-ext-enable pgsql
Afterwards, we can test this by build the image.
docker build -t mediawiki-postgres .
Once the build was successfully compledted I’m going to replace the beviously run instance of media wiki with the newly build one.
docker run --name some-mediawiki -p 8080:80 -d mediawiki-postgres
This will reset the installation routine. However, we do not care because we only want to see that we could install it with the postgres backend. Once the container is start we’re going to localhost:8080
and we can see that the postgres is present! Great.
The next step is to replace the old image within the docker-compose file. Also we’re going to define a a Context. This way we can build it if we want to update.
Update the image:
version: '3'
services:
mediawiki:
image: mediawiki-postgres
build:
context:
./MediaWiki-postgres
restart: always
ports:
- 8080:80
depends_on:
- db
#volumes:
# - /var/www/html/images
# After initial setup, download LocalSettings.php to the same directory as
# this yaml and uncomment the following line and use compose to restart
# the mediawiki service
# - ./LocalSettings.php:/var/www/html/LocalSettings.php
I should not forget to git init and commit at this stage. Now we erestart the container and copy the configuration again. Bam, the previosuve install is presented!
Next step is setting up the first deployment with nginx and let’s encrypt.
so far,
akendo
[0] https://blog.akendo.eu/post/2020-12-01-mediawiki-part-one/
[1] https://www.php.net/manual/en/pgsql.installation.php