Adding wordpress app.

This commit is contained in:
2026-07-04 12:54:54 -07:00
parent 422d2a38d2
commit e62593bf44
11 changed files with 206 additions and 2 deletions

View File

@@ -0,0 +1,3 @@
{$wordpress_SUBDOMAIN}.{$ROOT_DOMAIN} {
reverse_proxy http://wordpress_caddy:80
}

View File

@@ -0,0 +1,11 @@
:80 {
root * /var/www/html
encode gzip zstd
php_fastcgi wordpress:9000 {
trusted_proxies 172.30.0.0/16
}
file_server
}

View File

@@ -0,0 +1,8 @@
IMAGE_DEPS := $(IMAGE_DEPS) \
app/wordpress/wordpress_db_password \
app/wordpress/wordpress_db_root_password
app/wordpress/wordpress_db_password: $(apps_config)
bash -c 'source $(apps_config); printf "%s\n" "$$WORDPRESS_DB_PASSWORD" > $@'
app/wordpress/wordpress_db_root_password: $(apps_config)
bash -c 'source $(apps_config); printf "%s\n" "$$WORDPRESS_DB_ROOT_PASSWORD" > $@'

View File

@@ -0,0 +1,4 @@
upload_max_filesize = 256M
post_max_size = 256M
memory_limit = 256M
max_execution_time = 300

View File

@@ -0,0 +1,108 @@
secrets:
wordpress_db_password:
file: ./wordpress/wordpress_db_password
wordpress_db_root_password:
file: ./wordpress/wordpress_db_root_password
services:
wordpress_caddy:
image: docker.io/caddy:2.11.4-alpine
volumes:
- ./wordpress/Caddyfile-internal:/etc/caddy/Caddyfile:ro
- /nassella/wordpress/caddy-config:/config
- /nassella/wordpress/caddy-data:/data
- /nassella/wordpress/var-www-html:/var/www/html:ro
networks:
- lb
- wordpress_instance
restart: unless-stopped
depends_on:
- wordpress
wordpress:
image: wordpress:php8.4-fpm
restart: unless-stopped
environment:
WORDPRESS_DB_HOST: wordpress_db
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD_FILE: /run/secrets/wordpress_db_password
WORDPRESS_DB_NAME: wordpress
depends_on:
wordpress_db:
condition: service_healthy
volumes:
- /nassella/wordpress/var-www-html:/var/www/html
- ./wordpress/custom.ini:/usr/local/etc/php/conf.d/custom.ini:ro
networks:
- wordpress_db
- wordpress_instance
- wordpress_outbound
secrets:
- wordpress_db_password
wordpress_db:
image: mysql:9.7
restart: always
environment:
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD_FILE: /run/secrets/wordpress_db_password
MYSQL_ROOT_PASSWORD_FILE: /run/secrets/wordpress_db_root_password
volumes:
- /nassella/wordpress/var-lib-mysql:/var/lib/mysql
networks:
- wordpress_db
healthcheck:
test:
[
"CMD-SHELL",
"MYSQL_PWD=$$(cat /run/secrets/wordpress_mysql_root_password) mysqladmin ping -h 127.0.0.1 -uroot --silent"
]
interval: 1s
start_period: 30s
start_interval: 10s
retries: 120
secrets:
- wordpress_db_password
- wordpress_db_root_password
# wordpress_init:
# image: wordpress:cli-php8.4
# restart: "no"
# depends_on:
# - wordpress_db
# - wordpress
# environment:
# WORDPRESS_DB_HOST: db
# WORDPRESS_DB_USER: exampleuser
# WORDPRESS_DB_PASSWORD: examplepass
# WORDPRESS_DB_NAME: exampledb
# WP_URL: "https://wp.nassella.org"
# WP_TITLE: "Nassella"
# WP_ADMIN_USER: "admin"
# WP_ADMIN_PASSWORD: "admin"
# WP_ADMIN_EMAIL: "admin@example.org"
# OIDC_CLIENT_ID: wordpress
# OIDC_CLIENT_SECRET: "secret"
# OIDC_PROVIDER: "https://auth.nassella.org"
# volumes:
# - /nassella/wordpress/var-www-html:/var/www/html
# - ./init:/scripts
# entrypoint:
# - /bin/bash
# - /scripts/init.sh
networks:
lb:
wordpress_instance:
driver: bridge
internal: true
wordpress_outbound:
driver: bridge
wordpress_db:
driver: bridge
internal: true

View File

@@ -0,0 +1,48 @@
#!/bin/bash
set -e
echo "Waiting for db..."
until wp db check --allow-root
do
sleep 5
done
echo "db ready"
if ! wp core is-installed --allow-root
then
echo "installing wp"
wp core install \
--url="$WP_URL" \
--title="$WP_TITLE" \
--admin_user="$WP_ADMIN_USER" \
--admin_password="$WP_ADMIN_PASSWORD" \
--admin_email="$WP_ADMIN_EMAIL" \
--skip-email \
--allow-root
fi
echo "installing plugins"
if ! wp plugin is-installed daggerhart-openid-connect-generic
then
wp plugin install daggerhart-openid-connect-generic \
--activate \
--allow-root
fi
if ! wp plugin is-active daggerhart-openid-connect-generic
then
wp plugin activate daggerhart-openid-connect-generic
fi
echo "plugins installed. configuring plugins"
# after installing the plugs we can then use the plugin's CLI
# to configure the plugin
wp option update openid_connect_generic_settings 'the settings' # TODO lookup
# or
wp option patch update ...