With Docker Desktop on Windows the bind-mounted C:\hotel made every page
take ~5-7 s; with the code on the Linux filesystem it takes ~0.1 s.
- docker/Dockerfile.server bakes the repo into the image (.dockerignore
keeps .env, settings.inc.php and caches out)
- docker/server-entrypoint.sh copies the code into the app_code volume on
start: pass 1 updates code but skips runtime folders (uploads, generated
images, caches, downloaded translations, settings.inc.php), pass 2 adds
missing files without overwriting
- docker/php-server.ini: OPcache without timestamp checks, larger
realpath cache
- setup script waits for the container and checks the install marker
inside the volume; .gitattributes keeps *.sh LF on Windows checkouts
- TESTSERVER.md: speed section and one-time switch from the first version
Tested with a fresh stack: full install + demo + hardening, re-run keeps
DB/uploads, rebuilt image delivers code changes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- docker-compose.server.yml: app on APP_BIND for an existing nginx proxy,
QLO_SSL passed to the container
- docker/setup-testserver.ps1: one-shot setup for Docker Desktop/WSL
(random .env secrets, CLI install that never reinstalls over an
existing shop, German texts, optional demo content, hardening)
- docker/harden-test-server.php: delete demo customer pub@qloapps.com,
disable webservice API keys, set SSL mode, deny module log folders
- docker/nginx-qloapps.conf: HTTPS + basic auth + X-Forwarded-Proto
- apache: deny /modules/*/logs/ (qlocmconnector logs API secrets)
- docker/TESTSERVER.md: Windows Server guide (German)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>