Docker Compose and WordPress
Use WordPress locally with Docker using Docker compose
Dockerfile
for extending a base image and install wp-cli- Using a custom Docker image with automated build on Docker Hub
- Local domain ex
myapp.local
- Custom nginx config in
./nginx
- Custom PHP
php.ini
config in./config
- Volumes for
nginx
,wordpress
andmariadb
- WordPress using Bedrock - modern development tools, easier configuration, and an improved folder structure
- CLI scripts
- Create a self signed SSL certificate for using https
- Trust certs in macOS System Keychain
- Setup the local domain in your in
/etc/hosts
Setup
Requirements
- Docker
- Openssl for creatng the SSL cert. Install using Homebrew
brew install openssl
Create SSL cert
cd cli
./create-cert.sh
Edit the script to your your custom domain, this example uses myapp.local
Note: OpenSSL needs to be installed.
Trust the cert in macOS Keychain
Chrome and Safari will trust the certs using this script.
In Firefox: Select Advanced, Select the Encryption tab, Click View Certificates. Navigate to where you stored the certificate and click Open, Click Import.
cd cli
./trust-cert.sh
Edit the script to your your custom domain, this example uses myapp.local
Setup vhost in /etc/hosts
cd cli
./setup-hosts-file.sh
Follow the instructions. For example use
myapp.local
Setup ENV
cd src
cp .env.example .env
Use the following database settings:
DB_HOST=mysql:3306
DB_NAME=myapp
DB_USER=root
DB_PASSWORD=password
Install WordPress and Composer dependencies
cd src
composer install
You can also use composer like this:
docker-compose run composer update
Run
docker-compose up -d
Notes:
When making changes to the Dockerfile, use:
docker-compose up -d --force-recreate --build
Tools
wp-cli
docker exec -it myapp-wordpress bash
wp search-replace https://olddomain.com https://newdomain.com --allow-root
You can use this command first after you've installed WordPress using Composer as the example above.
Changelog
2019-08-02
- Added Linux support. Thanks to @faysal-ishtiaq.
Useful Docker Commands
Login to the docker container
docker exec -it myapp-wordpress bash
Stop
docker-compose stop
Down (stop and remove)
docker-compose down
Cleanup
docker-compose rm -v
Recreate
docker-compose up -d --force-recreate
Rebuild docker container when Dockerfile has changed
docker-compose up -d --force-recreate --build