Use Docker to develop WordPress sites locally and then deploy to shared hosting.

Alex Gleason 578ec18f24 Fix port conflict issue by using port 0 7 years ago
scripts 578ec18f24 Fix port conflict issue by using port 0 7 years ago
wordpress 28b17439d2 Set static container names, refactor 7 years ago
.gitignore 28b17439d2 Set static container names, refactor 7 years ago
LICENSE ea905c6580 Add license 7 years ago
Makefile b0ee7cb822 Fix 'make start' 7 years ago
README.md 6c221eb0e7 Added instructions for adding user to docker group 7 years ago
docker-compose.yml 578ec18f24 Fix port conflict issue by using port 0 7 years ago
env-example 1779b77cc5 Initial commit 7 years ago

README.md

CodePress Boilerplate

This is a boilerplate for using Docker to develop WordPress sites locally and then deploy to shared hosting. This isn't a fun procedure, so this project exists to mitigate some of the pain.

Local development

1. Install Docker

$ wget -nv -O - https://get.docker.com/ | sh

Once installed, you will need to add yourself to the docker group on your computer. Replace myname with your username below.

$ sudo usermod -aG docker myname

Finally, log out of and back into your computer (or reboot it).

If this doesn't work, you can follow the tutorial to install Docker. This project assumes you're using a Linux workstation.

2. Start the containers

$ make start

You can now see the WordPress install screen at localhost:8000

3. Authenticate

You need a file called .env in the root of your project containing the necessary credentials for pulling and pushing to the server. There is an example file called env-example for reference.

Contributing

Make sure you are authenticated with a .env file before trying any of this.

Strategy

  1. Get things working locally, then push any relevant code to master
  2. Deploy the code to the server
  3. Log into the deployed site and configure the back-end as needed
  4. Pull the database back locally

This does require doing things in the dashboard twice. It's tedious, but probably also the best way currently available for WordPress.

Sync with the server

You can use the provided Makefile to automate some tasks.

make deploy

Logs in via FTP and uploads only the relevant files to the server.

make pulldb

Connects to the remote MySQL database, dumps it, and pulls it into your local Docker container.

Docker tips

Stop the container:

$ docker stop mysite

Start the container:

$ docker start mysite

List all active containers:

$ docker ps

List all active AND stopped containers:

$ docker ps -a

Shell into a container:

$ docker exec -it mysite /bin/bash

Remove a container:

$ docker stop mysite
$ docker rm mysite

Get all information imaginable about a container:

$ docker inspect mysite