WordPress, Caddy & Docker
2022-02-10
If you're going to setup a WordPress site that using Docker. The config below may be interesting.
Everything is normal, however I decide to use Caddy instead of Nginx for the virtual host.
Caddy is an open source web server, automatic HTTPS and writter in Go.
Project structure:
āāā Caddyfile
āāā caddy_config/
āāā caddy_data/
āāā db/
āāā docker-compose.yml
āāā php.ini
āāā src/
The full config of docker-compose.yml
version: '3'
services:
wordpress:
image: wordpress:php7.4-fpm
restart: always
networks:
- wordpress
depends_on:
- database
environment:
WORDPRESS_DB_HOST: database
WORDPRESS_DB_USER: ${DB_USER}
WORDPRESS_DB_PASSWORD: ${DB_PASSWORD}
WORDPRESS_DB_NAME: ${DB_NAME}
volumes:
- ./src:/var/www/html
- ./php.ini:/usr/local/etc/php/conf.d/custom.ini
database:
image: mariadb:10.4
restart: always
networks:
- wordpress
environment:
MYSQL_DATABASE: ${DB_NAME}
MYSQL_USER: ${DB_USER}
MYSQL_PASSWORD: ${DB_PASSWORD}
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
volumes:
- ./db:/var/lib/mysql
caddy:
image: caddy:alpine
ports:
- 80:80
- 443:443
networks:
- wordpress
volumes:
- ./src:/var/www/html
- ./caddy_data:/data
- ./caddy_config:/config
- ./Caddyfile:/etc/caddy/Caddyfile
restart: unless-stopped
networks:
wordpress: {}
Here is the config of Caddyfile
{
email email@example.com
}
your-site.com {
root * /var/www/html
php_fastcgi wordpress:9000
file_server
}
www.your-site.com {
redir https://your-side.com{uri}
}
Updated on 7 Aug 2022:
If you want to serve multiple WordPress sites using Caddy, please follow this tutorial