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>
27 lines
1.2 KiB
Bash
27 lines
1.2 KiB
Bash
#!/bin/sh
|
|
# Copy the code baked into the image into the web root volume, then start Apache.
|
|
# pass 1: update code; runtime folders (uploads, generated images, caches, downloaded
|
|
# translations, config/settings.inc.php) are skipped
|
|
# pass 2: add any file that is still missing (first start, new defaults), never overwrite
|
|
set -e
|
|
|
|
SRC=/opt/qloapps-src/
|
|
DST=/var/www/html/
|
|
|
|
echo "server-entrypoint: updating code in $DST"
|
|
rsync -a --chown=www-data:www-data \
|
|
--exclude='/.git' --exclude='/.env' --exclude='/.htaccess' \
|
|
--exclude='/config/settings.inc.php' --exclude='/config/xml/' \
|
|
--exclude='/img/' --exclude='/upload/' --exclude='/download/' \
|
|
--exclude='/cache/' --exclude='/log/' --exclude='/translations/' --exclude='/mails/' \
|
|
--exclude='/modules/*/translations/' --exclude='/modules/*/views/img/' --exclude='/modules/*/logs/' \
|
|
--exclude='/themes/*/lang/' --exclude='/themes/*/cache/' --exclude='/themes/*/modules/*/translations/' \
|
|
"$SRC" "$DST"
|
|
|
|
echo "server-entrypoint: adding missing files"
|
|
rsync -a --ignore-existing --chown=www-data:www-data \
|
|
--exclude='/.git' --exclude='/.env' --exclude='/config/settings.inc.php' \
|
|
"$SRC" "$DST"
|
|
|
|
exec docker-php-entrypoint "$@"
|