Recently I needed to create a local copy of the mothership (i.e. chromemusic.de) in order to test updating plugins and the WordPress core. Also there was a new theme waiting to be installed.
I made a copy of the existing site using the WordPress Duplicator plugin. It’s an excellent way of creating backups of your site. There are a gazillion tutorials on how to use it so I won’t go into details. Suffice it to say you end up with an archive of your site’s files and database as well as an installer script which you both may download to your local hard drive.
Instead of installing Apache or NGINX, PHP and MySQL on my Laptop I decided to make use of the existing WordPress image provided by Docker. If you have never heard of Docker before think of it as a virtual machine of sorts. We will compose a service using images available from a repository. For this you need a file describing said composition. Such a file is called a docker compose file. In order to create the Docker compose file I created a folder structure and the file itself in my home directory using the following commands:
mkdir -p ~/example.com/wordpress touch ~/example.com/docker-compose.yml
The contents of the Docker compose file is pretty much straight up taken from the official Docker documentation regarding WordPress with one addition and looks as follows:
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" volumes: - ./wordpress:/var/www/html restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress volumes: db_data:
Basically I just added a volume for local access to the WordPress service that lets you edit files directly. When you start up the installation with the following command the latest version of WordPress gets installed alongside a MySQL instance as Docker images.
docker-compose up -d
You now go to the WordPress directory you created earlier and replace all files with the archive and the installer. You now only need to call http://localhost:8000/installer.php in order to install a copy of your site locally.
When finished you may shutdown Docker with the following command:
Congratulations! You have made it this far so here is a picture of a cat.