From c2295c49db0268f5cb13878ca0a3cf720504a50f Mon Sep 17 00:00:00 2001 From: Homelab Cursor Date: Sun, 28 Jun 2026 18:38:43 +0200 Subject: [PATCH] Arakava CT101: WordPress-Docker dauerhaft tunen (Phase 1). Compose, Apache MPM und MySQL my.cnf versionieren; mem_limits, InnoDB 512M und CT-RAM 6 GB gegen Worker-Stau. --- arakava-news/README.md | 18 ++++++++++ arakava-news/docker/apache/mpm_prefork.conf | 8 +++++ arakava-news/docker/deploy.sh | 16 +++++++++ arakava-news/docker/docker-compose.yml | 37 +++++++++++++++++++++ arakava-news/docker/mysql/my.cnf | 5 +++ 5 files changed, 84 insertions(+) create mode 100644 arakava-news/docker/apache/mpm_prefork.conf create mode 100755 arakava-news/docker/deploy.sh create mode 100644 arakava-news/docker/docker-compose.yml create mode 100644 arakava-news/docker/mysql/my.cnf diff --git a/arakava-news/README.md b/arakava-news/README.md index b8d8f5e02..38df0f90d 100644 --- a/arakava-news/README.md +++ b/arakava-news/README.md @@ -26,3 +26,21 @@ Manuelle Projektdoku fuer dauerhafte Hinweise, die **nicht** in die auto-generie - Das alte `C`-Symbol von `Corona-Transition` wird fuer neue Beitraege nicht mehr verwendet. - Fuer `Norbert Haering` wurde ein neues WordPress-Medium hinterlegt und dem Feed zugeordnet. - Ein Test-/Live-Post wurde nach der Umstellung erfolgreich auf WordPress veroeffentlicht. + +## Docker CT101 (wordpress-v2) + +Versionierte Compose + Tuning unter `docker/`: + +| Datei | Zweck | +|-------|-------| +| `docker/docker-compose.yml` | Stack + mem_limit (app 2g, mysql 1g) | +| `docker/apache/mpm_prefork.conf` | Apache Worker-Limit | +| `docker/mysql/my.cnf` | InnoDB buffer 512M, max_connections 50 | +| `docker/deploy.sh` | Deploy nach `/opt/wordpress/` | + +CT-RAM: **6 GB** (Host pve-hetzner). Deploy: + +```bash +cd arakava-news/docker && ./deploy.sh +# oder manuell auf hetzner: pct set 101 -memory 6144 +``` diff --git a/arakava-news/docker/apache/mpm_prefork.conf b/arakava-news/docker/apache/mpm_prefork.conf new file mode 100644 index 000000000..a9bd91087 --- /dev/null +++ b/arakava-news/docker/apache/mpm_prefork.conf @@ -0,0 +1,8 @@ +# CT101 Arakava — Docker mem_limit 2g, MySQL separat 1g + + StartServers 3 + MinSpareServers 2 + MaxSpareServers 6 + MaxRequestWorkers 14 + MaxConnectionsPerChild 500 + diff --git a/arakava-news/docker/deploy.sh b/arakava-news/docker/deploy.sh new file mode 100755 index 000000000..72e855f26 --- /dev/null +++ b/arakava-news/docker/deploy.sh @@ -0,0 +1,16 @@ +#!/bin/bash +# Deploy Docker-Stack nach CT101 /opt/wordpress +set -euo pipefail +SRC="$(cd "$(dirname "$0")" && pwd)" +HOST="${1:-pve-hetzner}" +echo "Deploy von $SRC nach CT101 via $HOST" +ssh "$HOST" "mkdir -p /opt/wordpress/apache /opt/wordpress/mysql && rm -rf /opt/wordpress/mysql/my.cnf" +ssh "$HOST" "pct exec 101 -- mkdir -p /opt/wordpress/apache /opt/wordpress/mysql && rm -rf /opt/wordpress/mysql/my.cnf 2>/dev/null || true" +scp "$SRC/docker-compose.yml" "$HOST:/tmp/wp-compose.yml" +scp "$SRC/apache/mpm_prefork.conf" "$HOST:/tmp/mpm_prefork.conf" +scp "$SRC/mysql/my.cnf" "$HOST:/tmp/my.cnf" +ssh "$HOST" "pct push 101 /tmp/wp-compose.yml /opt/wordpress/docker-compose.yml && \ + pct push 101 /tmp/mpm_prefork.conf /opt/wordpress/apache/mpm_prefork.conf && \ + pct push 101 /tmp/my.cnf /opt/wordpress/mysql/my.cnf && \ + pct exec 101 -- bash -c 'cd /opt/wordpress && docker compose up -d'" +echo "OK — pruefen: pct exec 101 -- docker stats --no-stream" diff --git a/arakava-news/docker/docker-compose.yml b/arakava-news/docker/docker-compose.yml new file mode 100644 index 000000000..7abf9f9e5 --- /dev/null +++ b/arakava-news/docker/docker-compose.yml @@ -0,0 +1,37 @@ +# CT101 wordpress-v2 — Quelle der Wahrheit (Deploy: /opt/wordpress/) +services: + mysql: + image: mysql:8.0 + container_name: wordpress-mysql + restart: always + mem_limit: 1g + environment: + MYSQL_ROOT_PASSWORD: astral66 + MYSQL_DATABASE: wordpress + MYSQL_USER: wordpress + MYSQL_PASSWORD: astral66 + volumes: + - mysql_data:/var/lib/mysql + - ./mysql/my.cnf:/etc/mysql/conf.d/zz-custom.cnf:ro + + wordpress: + image: wordpress:6.7-php8.2-apache + container_name: wordpress-app + restart: always + mem_limit: 2g + depends_on: + - mysql + ports: + - "80:80" + environment: + WORDPRESS_DB_HOST: mysql + WORDPRESS_DB_NAME: wordpress + WORDPRESS_DB_USER: wordpress + WORDPRESS_DB_PASSWORD: astral66 + volumes: + - wp_data:/var/www/html + - ./apache/mpm_prefork.conf:/etc/apache2/mods-enabled/mpm_prefork.conf:ro + +volumes: + mysql_data: + wp_data: diff --git a/arakava-news/docker/mysql/my.cnf b/arakava-news/docker/mysql/my.cnf new file mode 100644 index 000000000..5df07ddd5 --- /dev/null +++ b/arakava-news/docker/mysql/my.cnf @@ -0,0 +1,5 @@ +[mysqld] +# DB ~212 MB (2026-06) — ganzer Datensatz passt in Buffer +innodb_buffer_pool_size = 512M +innodb_buffer_pool_instances = 1 +max_connections = 50