
Total dev vs prod parity (including, optionally, the database layer). When arriving at the above solution, we wanted something that met all the following criteria: RUN if ] then echo No Shell else chsh -s /bin/bash www-data fiĬOPY -from=builder -chown=www-data:www-data /app /appĬMD RUN apt-get update & apt-get install git unzip supervisor sudo wget default-mysql-client -y RUN chmod +x /usr/local/bin/install-php-extensions & sync & install-php-extensions gd mysqli pdo_mysql zip imagick sockets memcached RUN ln -s /usr/local/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm ARG PHP_VERSION=8.1įROM docker.io/bitpoke/wordpress-runtime:bedrock-build-php-$ as baseĬOPY -from=nodebuilder /usr/local/lib/node_modules /usr/local/lib/node_modulesĬOPY -from=nodebuilder /usr/local/bin/node /usr/local/bin/node I’ll write up our Docker / K8s workflow and put a starter repo together when I can. Note that this isn’t an out-of-the-box solution, it’s just something to get you started. etc/supervisor/nf that brings up PHP-FPM on tcp/9000 and Nginx. You’ll need to provide a valid supervisord config in. This probably could be done much more elegantly, but it works for our specific use-case. It also has all dependencies for Bud / Sage installed too. Here’s a dockerfile I’m currently using for WordPress 6.1, PHP 8.1, Bedrock. Although it’s not considered best practice, we found bundling Nginx into the same container as PHP via supervisord made sense, as we like to consider PHP + Nginx as a single stack layer, and interlock both versions together. Launching VSCode inside the container makes for a great developer experience. In K8s production, Percona XDB Cluster seems to be the best choice (we evaluated Galera, ProxySQL + Orchestrator + HyperDB and MySQL Replication + HyperDB) Bring up MySQL with Docker Compose (or just run an instance locally).
Bitpoke build WordPress runtime images (including Bedrock ones), which give us a great starting point.
Here are some things I’ve learned relating to Docker and the Roots ecosystem specifically: I’ve had a writeup on my todo list for ages, I’ll get round to it soon. We use a Sage 10 / Bud / Bedrock / PHP 8.1 / Nginx / Percona XtraDB / Longhorn stack on Kubernetes for development and production parity.