Using Docker for WordPress Development
How to setup a WordPress development environment using Docker and Docker Compose.
This post assumes that Docker and Docker Compose are installed on your local machine. If not follow the guide for your operating system:
Set up your docker-compose.yml
Mostly following Quickstart: Compose and WordPress.
Create a project directory and any folders you wish to simlink
mkdir my-wordpress wp-content
This is where your project will live, it will be launched from this folder and the relevant folders (themes/plugins) will be sim linked here so you can work on them.
if you want to be able to upload files bigger than 2 MB to your WordPress install then create an uploads.ini
and add the following content:
file_uploads = On
memory_limit = 64M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 600
Create a docker-compose.yml
file in that directory and add the following to it:
version: '3.3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes:
- /route/to/project/folder/wp-content:/var/www/html/wp-content
- /route/to/project/folder/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
volumes:
db_data:
run docker-compose up -d
and navigate to: localhost:8000
to complete the famous 5 minute install.
Useful docker-compose commands:
stop
- Stops running containers without removing them. They can be started again withdocker-compose start
start
- Starts existing containers for a service.down
- Stops containers and removes containers, networks, volumes, and images created byup
Help! I can't connect to my database.
If making changes to your file and running docker-compose up
again doesn't fix it (which it likely wont if you got one of the passwords wrong) you might need to run docker-compose rm -v
to removes all the containers including any anonymous volumes attached to them.
Since there's an unnamed volume attached to this too you'll also need to run docker volume ls
to identify it then docker volume rm project-folder_data_volume
Now when you rebuild the containers, assuming you have everything in your docker-compose.yml
correct everything should work.
Comments powered by Talkyard.