Use WordPress locally with Docker using Docker compose
Dockerfile
for extending a base image with a custom Docker image with automated build on Docker Hub- Custom domain for example
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
- Composer
- PhpMyAdmin
- 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
- Docker
- Openssl for creatng the SSL cert. Install using Homebrew
brew install openssl
Easily set your own local domain, db settings and more. Start by creating .env
files, like the examples below.
Copy .env-example
in the project root to .env
and edit your preferences.
Example:
IP=127.0.0.1
APP_NAME=myapp
DOMAIN="myapp.local"
DB_HOST=mysql
DB_NAME=myapp
DB_ROOT_PASSWORD=password
DB_TABLE_PREFIX=wp_
Copy .env-example
in the src
folder to .env
and edit your preferences.
Use the following database settings:
DB_HOST=mysql:3306
DB_NAME=myapp
DB_USER=root
DB_PASSWORD=password
cd cli
./create-cert.sh
Note: OpenSSL needs to be installed.
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
cd cli
./setup-hosts-file.sh
Follow the instructions.
Replace myapp.local
in nginx/wordpress_ssl.conf
with your own local domain of choice.
docker-compose run composer intall
If you have Composer installed on your Mac you can also use
cd src && composer install
docker-compose up -d
docker-compose will start all the services for you:
Starting myapp-mysql ... done
Starting myapp-composer ... done
Starting myapp-phpmyadmin ... done
Starting myapp-wordpress ... done
Starting myapp-nginx ... done
🚀 Open up https://myapp.local
PhpMyAdmin now comes installed as a service in docker-compose.
When making changes to the Dockerfile, use:
docker-compose up -d --force-recreate --build
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.
- Added
.env
support for specifying your own app name, domain etc in Docker and cli scripts. - Added phpMyAdmin. Visit http://127.0.0.1:8080/
- Added Linux support. Thanks to @faysal-ishtiaq.
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