It's been a while since this was posted. Hopefully the information in here is still useful to you (if it isn't please let me know!). If you want to get the new stuff as soon as it's out though, sign up to the mailing list below.Join the Mailing list
This post is one I wrote a while back but never published, as I’ve found some free time now, I’m going through and putting together posts that I jotted down but never got to publishing.
tldr; Wordpress in a container, full docker compose file is @ the bottom
Wordpress is one of (if not the) best open source Content Management Systems (CMS) out there. As any software that has been fortunate to grow old/expected with wide use, Wordpress certainly has it’s warts, but it is by far and away the most popular choice for a platform that is easy for users to setup, get started with, and manage. To top it all off, it’s open source and has one of thet few rare working large-scale monetization models available to Open Source Software (OSS) today.
Recently while building a project for a client, we needed to almost completely overhaul their existing wordpress site (some bad viruses had infected their host, and the old site wasn’t really needed. During the early stages of this project I wanted to get wordpress running locally on my own servers so others I was working with (and the client) could easily view the progress and suggest changes to the site as it was being developed. A longtime (if you can even count a few years as a “long time”) fan of Docker and the benefits of containerization, surely it would be easy to:
Get a decent quality docker image for wordpress
Reverse proxy (with NGINX) to the docker container running wordpress (w/ SSL stopping @ NGINX)
Luckily, inline with my expectations all this was actually super easy to do. While I didn’t quite completely configure Wordpress (or docker for that matter) for longevity, it was relatively easy to get a simple page up. Also, it was super easy to use docker for local dev of the wordpress environment.
Without further ado, here’s the docker compose file:
version: '2' services: wp: image: wordpress volumes: - ./wp-config.ini:/usr/local/etc/php/conf.d/uploads.ini links: - wp-db:mysql environment: MYSQL_PORT_3306_TCP: 'mysql' WORDPRESS_DB_PASSWORD: 'example' ports: - 8080:80 depends_on: - wp-db wp-db: image: mariadb expose: - "3306" environment: MYSQL_ROOT_PASSWORD: example
I used the official wordpress image, as well as the official mariadb image. Note that this configuration does NOT account for persistence - you’d need to mount a volume into the
wp-db component for that, and while I’m about to go through the experience (I have some some more WP projects coming up), I haven’t quite yet, so you’ll need to figure that part out yourself. Once I get to working on my next wordpress project I’ll circle back and update this post.. hopefully.