I would appreciate it if we could document in the context of the Docker-Hub-MediaWiki image description where the Docker images used by WMF in production are stored. That way, one could compare the images for debugging purposes.
Description
Event Timeline
After approx one hour of searching I eventually found
and
https://wikitech.wikimedia.org/wiki/MediaWiki_On_Kubernetes
as well as
https://wikitech.wikimedia.org/wiki/MediaWiki_On_Kubernetes/How_it_works
which explains
FCGI_MODE = .php.fcgi_mode - Whether to talk to fcgi via a unix socket (see below) or a tcp port on localhost
Still, it is somewhat unclear to me how one would utilize the -fpm images in a Kubernetes cluster. https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/core/+/HEAD/docker-compose.yml seems to suggest that dev containers communicate via socket, as no ports are configured. In addition https://www.mediawiki.org/wiki/MediaWiki-Docker/Configuration_recipes/Customize_base_image explains what other images can be used, but this only makes sense if one finds the matching dockerfiles.
@ChristianHeusel I understand that. The measurable outcome of this task may be to create a pull request to the Docker Hub mediawiki repository and add text to the README that explains how the fpm images can be used.
The implication of this would be that people who aim to switch to the FPM image variants can do so more quickly. For transparency here is the link to our attempt to switching to https://github.com/MaRDI4NFDI/docker-wikibase/pull/246/changes#diff-dd2c0eb6ea5cfc6c4bd4eac30934e2d5746747af48fef6da689e85b752f39557L4
The php-fpm images are used as a base to build the final image used by the mediawiki-app container within the mw-on-k8s pods, as explained in the docker image layering section. However these final images are restricted to our internal use, and I don't know if we actually build a publicly available version (tagging Release-Engineering-Team just in case).
Canonically, the images we produce for public consumption are available on our docker registry
On a more conceptual level, a mw-on-k8s pod (excluding logging, metrics, and memcached proxy sidecars for the purpose of this explanation) has 3 main containers:
- tls-proxy, an envoy instance that does TLS termination and proxies to...
- mediawiki-httpd, an apache container that handles redirects, rewrite rules, that proxies to...
- mediawiki-app, a php-fpm image containing the MediaWiki source code
These images connect to each other through pod-local networking (envoy -> httpd) or pod-local unix sockets (httpd -> php-fpm fcgi)
You can look at the mediawiki helm chart's lamp/deployment.yaml.tmp for the httpd/php-fpm part of the pod object.
Thank you for your answers. I think the info gathered in this ticket is sufficient for people who will use fpm images. Currently
https://hub.docker.com/_/mediawiki#mediawikiversion
does not even have a section on fpm.
The goal of this ticket is not to change anything, but just to summarize the discussion of this ticket and put it to the version description. So if one understands where the text that is currently there is generated, it won't be a lot of effort to put it there.