I had been using Local by Flywheel and that was my favorite and only method to create WordPress sites locally.
I had installed Docker Desktop but I had never taken the time to play with it.
The other day I learned about creating sites using a YAML file and a couple of commands and I loved how easy creating a WordPress website can be with Docker.
In this post, you will find information about how to create WordPress sites locally using Docker
Table of Contents
Install Docker Desktop
The first thing that you have to do is install Docker Desktop
- If you haven’t installed Docker Desktop yet, go to the Docker website and download the version for your operating system.
- Follow the installation instructions
- Verify the Docker Installation by opening the terminal and run the following command.
docker --version
Create a Folder
Now that you know that Docker is running on your computer, you have to create a folder.
If you plan to create several websites, create a folder and name it something like WordPress_Websites and create a folder for each one of them in it.
I have my folder on my Desktop.
Create an empty YAML file.
The name of the YAML file must be docker-compose.yml
YAML File
This is the YAML File I am using to create my WordPress sites
- It installs the latest version of WordPress.
- It creates your MariaDB Database.
- It also installs Adminer so you can make changes to your date.
You will also be able to use WP-CLI
services:
wps_wordpress: # Unique WordPress service name for 'wps' site
image: wordpress:latest
container_name: wps_wordpress_site # Unique container name
restart: always
ports:
- "8080:80" # Access WordPress via https://wpsurfer.com
environment:
WORDPRESS_DB_HOST: wps_db:3306 # Unique database host reference
WORDPRESS_DB_NAME: wps_wordpress_db
WORDPRESS_DB_USER: wps_user
WORDPRESS_DB_PASSWORD: wps_password
volumes:
- ./wps_wordpress_data:/var/www/html # Unique volume for persistence
networks:
- wps_net
entrypoint: >
sh -c "
apt-get update &&
apt-get install -y curl &&
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar &&
chmod +x wp-cli.phar &&
mv wp-cli.phar /usr/local/bin/wp &&
docker-entrypoint.sh apache2-foreground
"
wps_db: # Unique MariaDB service for 'wps' site
image: mariadb:latest
container_name: wps_mariadb_db
restart: always
environment:
MYSQL_ROOT_PASSWORD: wps_root_password
MYSQL_DATABASE: wps_wordpress_db
MYSQL_USER: wps_user
MYSQL_PASSWORD: wps_password
volumes:
- ./wps_db_data:/var/lib/mysql # Unique volume for persistence
networks:
- wps_net
wps_adminer: # Unique Adminer service for managing the database
image: adminer:latest
container_name: wps_adminer
restart: always
ports:
- "8081:8080" # Access Adminer via https://localhost:8081
networks:
- wps_net
volumes:
wps_wordpress_data:
driver: local
wps_db_data:
driver: local
networks:
wps_net:
driver: bridge
if you plan to create several sites, use unique names for the containers and different ports to avoid conflicts
Each folder must contain a different YAML file in them
Install WordPress
Figure out what the location of the folder with the YAML file is.
Open the terminal and use it to go to the location of the file.
Since I have my folder on my desktop. This is the command I run
cd ~/Desktop/docker/wps
and then run this command:
docker compose up -d
Now go to the port you specified and add the information you need to finish the creation of your WordPress site.
If you are not creating a new site from scratch, just add any information since these will be replaced when you migrate a site to it.
Test If WP-CLI is Working
In case, you might want to check if WP-CLI is working, you can run this simple command
docker exec -u www-data -it wps_wordpress_site wp plugin list
Other Docker Commands
In case you want to see what services are running
docker ps
In case you wanna see a list of running and stopped services
docker ps -a
If you name your stack in a sort of unique way, you can easily stop them or start them using these commands
docker stop $(docker ps -q --filter "name=wps")
docker start $(docker ps -aq --filter "name=wps")
Disclaimer
This was my experience playing with Docker.
Before November 10, 2024, I didn’t know what a YAML file was and how to use to create WordPress websites.
I use that file without any concern since these are Local sites. I use WordPress locally and then I upload a static version of my sites to Digital Ocean.
I really don’t have any security concerns since my sites are 100% static.
I always make backups of the database or the installation in case I break something or something breaks.
If I wanted to use Docker on a server, I would have to be more careful.