Files
novaconium/docker-entrypoint.sh
2026-07-20 20:30:03 -07:00

30 lines
1.4 KiB
Bash

#!/bin/sh
# Runs once per container start, before Apache — see /admin/docs/docker.
#
# docker-compose.yml bind-mounts App/, public/cache/, public/uploads/, and
# data/ from the host so a project's content/db survive a rebuild and can be
# edited without one. Two problems a plain COPY-at-build-time image can't
# solve on its own:
#
# 1. A bind mount to an empty (or not-yet-created) host directory shadows
# whatever COPY baked into that path in the image, replacing it with
# nothing — Docker does not seed bind mounts from image content the way
# it seeds a fresh named volume. App/ is only ever the docs/starter
# content wanted on host: seed it from the pristine copy stashed
# at build time (/opt/novaconium-app-default) if the mounted dir is
# empty, so `docker compose up` produces a working site on a first run
# with no manual copy step.
# 2. A bind-mounted host directory keeps the host's ownership, not the
# image's — the build-time `chown` in the Dockerfile never applies to
# it. Re-chown the mounted paths to the Apache worker user on every
# start so they're writable regardless of the host-side UID/GID.
set -e
if [ -z "$(ls -A /var/www/html/App 2>/dev/null)" ]; then
cp -a /opt/novaconium-app-default/. /var/www/html/App/
fi
chown -R www-data:www-data /var/www/html/public/cache /var/www/html/public/uploads /var/www/html/App /var/www/html/data
exec "$@"