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.
This commit is contained in:
Homelab Cursor 2026-06-28 18:38:43 +02:00
parent fb0b1fe2a7
commit c2295c49db
5 changed files with 84 additions and 0 deletions

View file

@ -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. - 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. - 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. - 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
```

View file

@ -0,0 +1,8 @@
# CT101 Arakava — Docker mem_limit 2g, MySQL separat 1g
<IfModule mpm_prefork_module>
StartServers 3
MinSpareServers 2
MaxSpareServers 6
MaxRequestWorkers 14
MaxConnectionsPerChild 500
</IfModule>

16
arakava-news/docker/deploy.sh Executable file
View file

@ -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"

View file

@ -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:

View file

@ -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