- scripts/docker-update.sh: git pull --ff-only, host db:migrate, docker compose build + up -d, health-check wait, keeps host-side PM2 'next' stopped. Fails safe on dirty working tree (exit 1) and on health failure (exit 3). - cron entry: daily 03:30 -> logs/docker-update.cron.log - README: Automatic Updates section + docker commands row
- docker-compose.yml: network_mode host so 127.0.0.1 refs (.env) keep working; mounts /var/www/Gamedata + write volumes; /api/health healthcheck; mem_limit - Dockerfile: package-manager detection (pnpm/yarn/npm) + PACKAGE_MANAGER arg; runs as www-data (UID/GID 33) so gamedata is writable; .env loaded only for the build (no secrets baked in); build runs on the host network - .dockerignore: .env stays in the build context (needed for NEXT_PUBLIC_*) - README: Docker deployment section (paths, volumes, chown, migrations on host)