Mediawiki development environment with docker - how do I run with podman?

Hello, I’m on Fedora 43 and I would like to work with the development environment for Mediawiki as described here MediaWiki Developers

As required I created an .env file and started “docker” (actually podman)

➜  mediawiki git:(master) ✗  docker compose up -d
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
WARN[0000] The deprecated BoltDB database driver is in use. This driver will be removed in the upcoming Podman 6.0 release in mid 2026. It is advised that you migrate to SQLite to avoid issues when this occurs. Set SUPPRESS_BOLTDB_WARNING environment variable to remove this message.

Executing external compose provider “/usr/libexec/docker/cli-plugins/docker-compose”. Please see podman-compose(1) for how to disable this message. <<<<

[+] Running 3/3
✔ Container mediawiki-mediawiki-1            Started                                                                                            0.5s
✔ Container mediawiki-mediawiki-jobrunner-1  Started                                                                                            0.4s
✔ Container mediawiki-mediawiki-web-1        Started                                                                                            0.6s

All good! The following command fails

docker compose exec mediawiki composer update

output here (long)

https://bin.disroot.org/?38e7d531bdea8fc3#4ztt6VTx9fFrnVEod4AxmVwFZR4ogv1deSrXBiH7hwFE

Apparently there is some permission error - of course I’m running podman as unprivileged user.

I guess we need to see your .yml file.

when defining bind mounts, you need to add the :z or :Z option, see https://unix.stackexchange.com/questions/651198/podman-volume-mounts-when-to-use-the-z-or-z-suffix for some explanation. (I am sure there is a lot of other documentation available on the internet).

One way of testing if SELinux is the culprit here is to disable SELInux temporarily and see if it works.

Also be aware of this warning. There is no easy database migration available currently. If this is your only container deployment, I recommend running podman system reset, which tells podman to start using SQLite. However, you loose all your existing containers. See podman-system-reset — Podman documentation

1 Like

Accully the recommends migration is this from the podman 6.0 proposal for f44

2 Likes

Great, thanks for sharing. They will implement automatic database migration In February, that’s one problem less. BoltDB Database Migration

1 Like

My .env file is as follows, just a copy and paste from the Mediawiki webpage

MW_SCRIPT_PATH=/w
MW_SERVER=http://localhost:8080
MW_DOCKER_PORT=8080
MEDIAWIKI_USER=Admin
MEDIAWIKI_PASSWORD=dockerpass
XDEBUG_CONFIG=
XDEBUG_ENABLE=true
XHPROF_ENABLE=true
MW_DOCKER_UID=1000
MW_DOCKER_GID=1000

(I don’t need Xdebug features)

I tried disabling SELinux, i.e. getenforce returns Disabled, but the command fails with the same error.

Just to be sure, I tried starting over with Docker instead of Podman and … it’s just the same. It fails with exactly the same error messages!

The files and directories in the container are owned by root.


➜  mediawiki git:(master) docker compose exec mediawiki bash     
steko@e81b6524c3a1:~$ ls -l
total 3152
-rw-r--r--. 1 root root     168 Dec 12 10:12 CODE_OF_CONDUCT.md
-rw-r--r--. 1 root root   19309 Dec 12 10:12 COPYING
-rw-r--r--. 1 root root   16669 Dec 12 10:12 CREDITS
-rw-r--r--. 1 root root   17344 Dec 12 10:12 DEVELOPERS.md
-rw-r--r--. 1 root root      95 Dec 12 10:12 FAQ
-rw-r--r--. 1 root root    5162 Dec 12 10:12 Gruntfile.js
-rw-r--r--. 1 root root 1799877 Dec 12 10:12 HISTORY
-rw-r--r--. 1 root root    3770 Dec 12 10:12 INSTALL
-rw-r--r--. 1 root root    1643 Dec 12 10:12 README.md
-rw-r--r--. 1 root root   20276 Dec 12 10:12 RELEASE-NOTES-1.46
-rw-r--r--. 1 root root     199 Dec 12 10:12 SECURITY
-rw-r--r--. 1 root root    4394 Dec 12 10:12 UPGRADE
-rw-r--r--. 1 root root     780 Dec 12 10:12 api.php
-rw-r--r--. 1 root root  436142 Dec 12 10:12 autoload.php
-rw-r--r--. 1 root root    3604 Dec 12 10:12 bundlesize.config.json
drwxr-xr-x. 1 root root      18 Dec 12 10:12 cache
-rw-r--r--. 1 root root    8684 Dec 12 10:12 composer.json
-rw-r--r--. 1 root root     125 Dec 12 10:12 composer.local.json-sample
-rw-r--r--  1 root root    1763 Dec 16 11:17 docker-compose.yml
drwxr-xr-x. 1 root root    1288 Dec 12 10:12 docs
drwxr-xr-x. 1 root root      52 Dec 12 10:12 extensions
drwxr-xr-x. 1 root root      30 Dec 12 10:12 images
-rw-r--r--. 1 root root    1490 Dec 12 10:12 img_auth.php
drwxr-xr-x. 1 root root    2220 Dec 12 10:12 includes
-rw-r--r--. 1 root root    1482 Dec 12 10:12 index.php
-rw-r--r--. 1 root root    1403 Dec 12 10:12 jsdoc.json
drwxr-xr-x. 1 root root      50 Dec 12 10:12 languages
-rw-r--r--. 1 root root     733 Dec 12 10:12 load.php
drwxr-xr-x. 1 root root    7844 Dec 12 10:12 maintenance
drwxr-xr-x. 1 root root     114 Dec 12 10:12 mw-config
-rw-r--r--. 1 root root    1030 Dec 12 10:12 opensearch_desc.php
-rw-r--r--. 1 root root  797332 Dec 12 10:12 package-lock.json
-rw-r--r--. 1 root root    1999 Dec 12 10:12 package.json
-rw-r--r--. 1 root root    3455 Dec 12 10:12 phpunit.xml.dist
drwxr-xr-x. 1 root root      86 Dec 12 10:12 resources
-rw-r--r--. 1 root root     508 Dec 12 10:12 rest.php
drwxr-xr-x. 1 root root      52 Dec 12 10:12 skins
drwxr-xr-x. 1 root root     140 Dec 12 10:12 sql
drwxr-xr-x. 1 root root     136 Dec 12 10:12 tests
-rw-r--r--. 1 root root     626 Dec 12 10:12 thumb.php
-rw-r--r--. 1 root root     928 Dec 12 10:12 thumb_handler.php

Actually, after reading more carefully the Mediawiki guide, there is a helpful troubleshooting section at the bottom that helped me solve the problem with Docker MediaWiki Developers

sudo usermod -aG docker $USER

This was enough to get it working with docker.

1 Like