initial commit

This commit is contained in:
2024-12-30 19:16:20 +09:00
commit d22b377f73
15 changed files with 619 additions and 0 deletions
+22
View File
@@ -0,0 +1,22 @@
${DOMAIN} {
#reverse_proxy wordpress_${DOMAIN}:80
tls internal
root * /var/www/${DOMAIN}/html
encode zstd gzip
# Serve WordPress PHP files through php-fpm:
php_fastcgi wordpress_${DOMAIN}:9000 {
root /var/www/html
}
# Enable the static file server:
file_server {
precompressed gzip
}
header / {
X-Frame-Options "SAMEORIGIN"
X-Content-Type-Options "nosniff"
}
}
+61
View File
@@ -0,0 +1,61 @@
services:
db_${DOMAIN}:
container_name: db_${DOMAIN}
image: mariadb:11.2-jammy
volumes:
- ./db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
healthcheck:
test: ["CMD", "mariadb-admin", "ping", "-h", "localhost", "--silent"]
interval: 10s
timeout: 5s
retries: 3
networks:
- ${DOMAIN}_net
wordpress_${DOMAIN}:
container_name: wordpress_${DOMAIN}
depends_on:
- db_${DOMAIN}
image: wordpress:fpm-alpine
volumes:
- ./html/:/var/www/html
restart: always
environment:
WORDPRESS_DB_HOST: db_${DOMAIN}:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD}
WORDPRESS_DB_NAME: wordpress
networks:
- ${DOMAIN}_net
- caddy_net
wpcli:
depends_on:
- db_${DOMAIN}
- wordpress_${DOMAIN}
environment:
WORDPRESS_DB_HOST: db_${DOMAIN}:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD}
WORDPRESS_DB_NAME: wordpress
image: wordpress:cli
entrypoint: wp
command: "--info"
volumes_from:
- wordpress_${DOMAIN}
networks:
- ${DOMAIN}_net
- caddy_net
networks:
${DOMAIN}_net:
driver: bridge
caddy_net:
external: true
+40
View File
@@ -0,0 +1,40 @@
#!/bin/bash
wp_cli() {
docker run --rm \
--network container:wordpress_${DOMAIN} \
-v "$(pwd):/var/www/html" \
wordpress:cli-php8.1 \
wp "$@"
}
wpcli() {
docker compose run --rm wpcli "$@"
}
echo "Waiting for MySQL to be ready..."
#while ! docker exec db_${DOMAIN} mysqladmin ping -h localhost --silent; do
# sleep 1
#done
while [ "$(docker inspect --format='{{.State.Health.Status}}' db_${DOMAIN})" != "healthy" ]; do
echo "MariaDB is not healthy yet. Retrying..."
sleep 5
done
echo "Installing WordPress..."
wpcli core install \
--url="https://${DOMAIN}" \
--title="${SITE_TITLE}" \
--admin_user="${ADMIN_USER}" \
--admin_password="${ADMIN_PASSWORD}" \
--admin_email="${ADMIN_EMAIL}" \
--skip-email
echo "Installing and activating plugins..."
wpcli plugin install wordfence --activate
wpcli theme install twentytwentyfour --activate
wpcli plugin update --all
wpcli theme update --all
echo "WordPress setup completed!"