How to set up a wp site fast with xdebug.
This is the end result:

Prerequisites.
- Docker
Instalation:
Create a Dockerfile like this one:
FROM wordpress:latest
ENV XDEBUG_PORT 9001
ENV XDEBUG_IDEKEY PHPSTORM
RUN pecl install "xdebug" \
&& docker-php-ext-enable xdebug
RUN echo "xdebug.remote_enable=1" >> /usr/local/etc/php/conf.d/xdebug.ini && \
echo "xdebug.remote_autostart=1" >> /usr/local/etc/php/conf.d/xdebug.ini && \
echo "xdebug.remote_port=${XDEBUG_PORT}" >> /usr/local/etc/php/conf.d/xdebug.ini && \
echo "xdebug.idekey=${XDEBUG_IDEKEY}" >> /usr/local/etc/php/conf.d/xdebug.ini
Create docker-compose.yml file like this one:
version: '3.1'
services:
wordpress:
build: .
ports:
- 80:80
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: exampleuser
WORDPRESS_DB_PASSWORD: examplepass
WORDPRESS_DB_NAME: exampledb
XDEBUG_CONFIG: >-
remote_enable=1
remote_mode=req
remote_port=9001
remote_host=172.17.0.1 # also could be host.docker.internal
idekey=PHPSTORM
PHP_IDE_CONFIG: serverName=php-docker
volumes:
- ./wp:/var/www/html
- ./templates/.htaccess:/var/www/html/.htaccess
db:
image: mysql:5.7
environment:
MYSQL_DATABASE: exampledb
MYSQL_USER: exampleuser
MYSQL_PASSWORD: examplepass
MYSQL_RANDOM_ROOT_PASSWORD: '1'
cli:
image: wordpress:cli
user: '33'
environment:
HOME: /tmp
volumes:
- ./wp:/var/www/html
adminer:
image: adminer
ports:
- 9999:8080
Create an .htaccess file like this one:
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
Now run the followin commands:
# create a templates directory
mkdir templates
# create a wp directory
mkdir wp
# move .htaccess file to template dir
mv .htaccess templates
# start docker containers
docker-compose up -d
# wait 5 seconds
# install wordpress multisite
docker-compose run --rm cli core multisite-install \
--url=http://localhost \
--title="test site" \
--admin_user="admin" \
--admin_password="admin" \
--admin_email="example@example.com" \
--skip-email
We will end with an structure like:

Now visit http://localhost
Congratulations!
[…] How to setup a wordpress multisite with docker compose and xdebug in minutes […]