This repository was forked from v3nt/docker-wordpress-composer
Use WordPress locally with Docker using Docker compose
Dockerfilefor 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.iniconfig in./config - Volumes for
nginx,wordpressandmariadb - 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 - Create Containers
- Install - Runs
composer updateScript to run composer inside docker machine and install WP inside of it runningcomposer install - Destroy - Destroys and Delete all volumes and non-tracked PHP files
- Up and Down scripts
Install Docker
cd cli && ./create-cert.shEdit the script to your your custom domain, this example uses myapp.local
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.shEdit the script to your your custom domain, this example uses myapp.local
cd cli && ./setup-hosts-file.shFollow the instructions. For example use
myapp.local
cp .env.example .envcd src
cp .env.example .envUse the following database settings:
DB_HOST=mysql:3306
DB_NAME=myapp
DB_USER=myapp
DB_PASSWORD=passwordImportant note: if you change the ENV settings on the Dockerfile ENV, remember to set the same changes inside the src folder as well.
cd src
composer installYou can also use composer like this:
docker-compose run composer updateOr, you can run./cli/install.shto run this automatically
docker compose up -dOr, you can run
./cli/up.shto run this automatically
🚀 Open up https://myapp.local
When making changes to the Dockerfile, use:
docker compose up -d --force-recreate --buildOr, even better, to force the recreation, run, in the following order:
cd cli && ./destroy.sh && ./recreate.sh && ./install.shWith those 3 commands you are removing every volume, images, rebuilding the machine and installing composer dependencies
old. => new.
docker exec -it myapp-wordpress bash
wp search-replace https://olddomain.com https://myapp.local --allow-root- Updated PHP to 8.2
- Docker commands updated to last version
- Added cronjob so now the container doesn't depends on WP_Cron to run, the cron jobs are running trough wp-cli
- Added scripts to recreate, destroy, put the containers up and down and also to install composer dependencies
- Removed wp clone using curl on the original
urre/wordpress-nginx-docker-composeDockerfile. No use since it's composer that installs the wordpress usingroots/wordpress - Updated PHP to 8.2 and WordPress to 6.4
- Removed initial backups from the original repo
- Fixed Imagick and zip failing after cloning the Dockerfile script from
urre/wordpress-nginx-docker-compose - Added ENV variables for almost everything
- Removed the need of using the root user for WordPress Installation access to MariaDB
- Changed the Debug logging to a file instead of displaying errors in the browser
- Added Linux support. Thanks to @faysal-ishtiaq.
Login to the docker container
docker exec -it myapp-wordpress bashStop
docker compose stopDown (stop and remove)
docker compose downCleanup
docker compose rm -vRecreate
docker compose up -d --force-recreateRebuild docker container when Dockerfile has changed
docker compose up -d --force-recreate --buildAlso, the .cli folder contains some scripts to help you with the commands above.