mirror of
https://github.com/casjaysdevdocker/caddy
synced 2026-06-24 14:01:04 -04:00
♻️ Migrate caddy to /config/ source-of-truth architecture ♻️
Remove template-files dead weight; bake configs into rootfs/tmp/etc/
and htdocs into rootfs/tmp/usr/local/share/caddy/htdocs/ so the image
carries no runtime-copy layer. On first container start, __init_service_conf
seeds /config/{svc}/ from the baked /etc/{svc}/; __update_conf_files then
symlinks /etc/{svc} -> /config/{svc}/ so /etc always reflects user config.
Flat /etc/ symlinks (php.ini, php-fpm.conf, php-fpm.d) added so all
standard lookup paths resolve through /config/php/.
- rootfs/root/docker/setup/03-files.sh: remove template-files copy blocks; remove /tmp/data handler; add /tmp/usr -> /usr handler; bump version
- rootfs/usr/local/etc/docker/functions/entrypoint.sh: update to template version with __init_service_conf, command -v fast-exit guards on all __find_* functions
- rootfs/usr/local/etc/docker/init.d/zz-caddy.sh: __update_conf_files uses __init_service_conf + symlink /etc/caddy -> /config/caddy; seed www_dir from /usr/local/share/caddy/htdocs on first start
- rootfs/usr/local/etc/docker/init.d/01-php-fpm.sh: __update_conf_files uses __init_service_conf + symlink /etc/php -> /config/php; add flat /etc/ symlinks for php.ini, php-fpm.conf, php-fpm.d
- rootfs/tmp/etc/caddy/Caddyfile: baked caddy config (moved from template-files)
- rootfs/tmp/etc/php/php.ini: baked PHP ini (moved from template-files)
- rootfs/tmp/etc/php/php-fpm.conf: baked PHP-FPM config (moved from template-files)
- rootfs/tmp/etc/php/php-fpm.d/www.conf: baked FPM pool config (moved from template-files)
- rootfs/tmp/usr/local/share/caddy/htdocs/www/: baked web root (moved from template-files/data)
- rootfs/usr/local/share/template-files/: deleted entirely
rootfs/root/docker/setup/03-files.sh
rootfs/tmp/
rootfs/usr/local/etc/docker/functions/entrypoint.sh
rootfs/usr/local/etc/docker/init.d/01-php-fpm.sh
rootfs/usr/local/etc/docker/init.d/zz-caddy.sh
rootfs/usr/local/share/template-files/config/caddy/Caddyfile
rootfs/usr/local/share/template-files/config/env/default.sample
rootfs/usr/local/share/template-files/config/env/examples/00-directory.sh
rootfs/usr/local/share/template-files/config/env/examples/addresses.sh
rootfs/usr/local/share/template-files/config/env/examples/certbot.sh
rootfs/usr/local/share/template-files/config/env/examples/couchdb.sh
rootfs/usr/local/share/template-files/config/env/examples/dockerd.sh
rootfs/usr/local/share/template-files/config/env/examples/global.sh
rootfs/usr/local/share/template-files/config/env/examples/healthcheck.sh
rootfs/usr/local/share/template-files/config/env/examples/mariadb.sh
rootfs/usr/local/share/template-files/config/env/examples/mongodb.sh
rootfs/usr/local/share/template-files/config/env/examples/networking.sh
rootfs/usr/local/share/template-files/config/env/examples/other.sh
rootfs/usr/local/share/template-files/config/env/examples/php.sh
rootfs/usr/local/share/template-files/config/env/examples/postgres.sh
rootfs/usr/local/share/template-files/config/env/examples/redis.sh
rootfs/usr/local/share/template-files/config/env/examples/services.sh
rootfs/usr/local/share/template-files/config/env/examples/ssl.sh
rootfs/usr/local/share/template-files/config/env/examples/supabase.sh
rootfs/usr/local/share/template-files/config/env/examples/webservers.sh
rootfs/usr/local/share/template-files/config/env/examples/zz-entrypoint.sh
rootfs/usr/local/share/template-files/config/.gitkeep
rootfs/usr/local/share/template-files/config/php/php-fpm.conf
rootfs/usr/local/share/template-files/config/php/php-fpm.d/www.conf
rootfs/usr/local/share/template-files/config/php/php.ini
rootfs/usr/local/share/template-files/data/.gitkeep
rootfs/usr/local/share/template-files/data/htdocs/www/404.html
rootfs/usr/local/share/template-files/data/htdocs/www/css/bootstrap.css
rootfs/usr/local/share/template-files/data/htdocs/www/css/cookieconsent.css
rootfs/usr/local/share/template-files/data/htdocs/www/css/errorpages.css
rootfs/usr/local/share/template-files/data/htdocs/www/css/index.css
rootfs/usr/local/share/template-files/data/htdocs/www/favicon.ico
rootfs/usr/local/share/template-files/data/htdocs/www/health/index.json
rootfs/usr/local/share/template-files/data/htdocs/www/health/index.txt
rootfs/usr/local/share/template-files/data/htdocs/www/images/403.png
rootfs/usr/local/share/template-files/data/htdocs/www/images/404.gif
rootfs/usr/local/share/template-files/data/htdocs/www/images/bg.png
rootfs/usr/local/share/template-files/data/htdocs/www/images/favicon.ico
rootfs/usr/local/share/template-files/data/htdocs/www/images/icon.png
rootfs/usr/local/share/template-files/data/htdocs/www/images/icon.svg
rootfs/usr/local/share/template-files/data/htdocs/www/index.php
rootfs/usr/local/share/template-files/data/htdocs/www/info.php
rootfs/usr/local/share/template-files/data/htdocs/www/js/app.js
rootfs/usr/local/share/template-files/data/htdocs/www/js/bootstrap.min.js
rootfs/usr/local/share/template-files/data/htdocs/www/js/errorpages/homepage.js
rootfs/usr/local/share/template-files/data/htdocs/www/js/errorpages/isup.js
rootfs/usr/local/share/template-files/data/htdocs/www/js/errorpages/loaddomain.js
rootfs/usr/local/share/template-files/data/htdocs/www/js/errorpages/scale.fix.js
rootfs/usr/local/share/template-files/data/htdocs/www/js/jquery/default.js
rootfs/usr/local/share/template-files/data/htdocs/www/js/passprotect.min.js
rootfs/usr/local/share/template-files/data/htdocs/www/site.webmanifest
rootfs/usr/local/share/template-files/defaults/.gitkeep
This commit is contained in:
@@ -56,23 +56,30 @@ __update_conf_files() {
|
||||
if [ -n "$php_bin" ]; then
|
||||
[ -d "/data/logs/php" ] || mkdir -p "/data/logs/php"
|
||||
chmod -Rf 777 "$data_dir/logs/php" /var/tmp
|
||||
if [ "$etc_dir" != "/etc/php" ]; then
|
||||
[ -d "/etc/php" ] && rm -Rf "/etc/php"
|
||||
ln -sf "$etc_dir" "/etc/php"
|
||||
# Seed /config/php from discovered php etc dir on first start (copy only)
|
||||
__init_service_conf "$conf_dir" "$etc_dir"
|
||||
# Symlink /etc/php -> /config/php so /etc always reflects user config
|
||||
if [ ! -L "$etc_dir" ]; then
|
||||
rm -rf "$etc_dir"
|
||||
ln -sf "$conf_dir" "$etc_dir"
|
||||
fi
|
||||
#
|
||||
[ -d "$etc_dir" ] || mkdir -p "$etc_dir"
|
||||
[ -d "$conf_dir/conf.d" ] && rm -R $etc_dir/conf.d/*
|
||||
[ -d "$conf_dir" ] && cp -Rf "$conf_dir/." "$etc_dir/"
|
||||
# Also normalize /etc/php if etc_dir differs (distros vary)
|
||||
if [ "$etc_dir" != "/etc/php" ] && [ ! -L "/etc/php" ]; then
|
||||
ln -sf "$conf_dir" "/etc/php"
|
||||
fi
|
||||
# Flat /etc/ symlinks so /etc/php.ini, /etc/php-fpm.conf, /etc/php-fpm.d always exist
|
||||
[ -L "/etc/php.ini" ] || [ -e "/etc/php.ini" ] || ln -sf "/etc/php/php.ini" "/etc/php.ini"
|
||||
[ -L "/etc/php-fpm.conf" ] || [ -e "/etc/php-fpm.conf" ] || ln -sf "/etc/php/php-fpm.conf" "/etc/php-fpm.conf"
|
||||
[ -L "/etc/php-fpm.d" ] || [ -e "/etc/php-fpm.d" ] || ln -sf "/etc/php/php-fpm.d" "/etc/php-fpm.d"
|
||||
#
|
||||
if [ -f "$www_dir/www/index.html" ] && [ -f "$www_dir/www/index.php" ]; then
|
||||
[ -f "$www_dir/www/index.html" ] && rm -Rf "$www_dir/www/index.html"
|
||||
rm -Rf "$www_dir/www/index.html"
|
||||
fi
|
||||
chmod -Rf 777 "/data/logs/php"
|
||||
#
|
||||
sed -i 's|user.*=.*|user = '$user'|g' "$etc_dir"/*/www.conf
|
||||
sed -i 's|group.*=.*|group = '$user'|g' "$etc_dir"/*/www.conf
|
||||
chown -Rf "$user" "$etc_dir" "$data_dir/logs/php" /var/tmp
|
||||
sed -i 's|user.*=.*|user = '"$php_user"'|g' "$conf_dir"/*/www.conf
|
||||
sed -i 's|group.*=.*|group = '"$php_user"'|g' "$conf_dir"/*/www.conf
|
||||
chown -Rf "$php_user" "$conf_dir" "$data_dir/logs/php" /var/tmp
|
||||
else
|
||||
echo "php can not be found"
|
||||
[ -f "$www_dir/info.php" ] && echo "PHP support is not enabled" >"$www_dir/info.php"
|
||||
|
||||
@@ -52,13 +52,23 @@ caddy_bin="$(type -P 'caddy' || type -P 'Caddy')"
|
||||
# use this function to update config files - IE: change port
|
||||
__update_conf_files() {
|
||||
echo "Initializing caddy web server in $conf_dir"
|
||||
[ -d "$etc_dir" ] || mkdir -p "$etc_dir" "$conf_dir"
|
||||
[ -d "$conf_dir" ] && cp -Rf "$conf_dir/." "$etc_dir/" || cp -Rf "$etc_dir/." "$conf_dir/"
|
||||
# Seed /config/caddy from /etc/caddy on first start (copy only)
|
||||
__init_service_conf "$conf_dir" "$etc_dir"
|
||||
# Symlink /etc/caddy -> /config/caddy so /etc always reflects user config
|
||||
if [ ! -L "$etc_dir" ]; then
|
||||
rm -rf "$etc_dir"
|
||||
ln -sf "$conf_dir" "$etc_dir"
|
||||
fi
|
||||
#
|
||||
[ -d "/data/logs/caddy" ] || mkdir -p "/data/logs/caddy"
|
||||
chmod -Rf 777 "/data/logs/caddy"
|
||||
#
|
||||
# Seed web root from baked-in share on first start
|
||||
local share_htdocs="/usr/local/share/caddy/htdocs"
|
||||
[ -d "$www_dir" ] || mkdir -p "$www_dir"
|
||||
if [ -d "$share_htdocs" ] && __is_dir_empty "$www_dir"; then
|
||||
cp -Rf "$share_htdocs/." "$www_dir/"
|
||||
fi
|
||||
[ -d "$www_dir/www/health" ] || mkdir -p "$www_dir/www/health"
|
||||
[ -f "$www_dir/www/health/index.txt" ] || echo 'ok' >"$www_dir/www/health/index.txt"
|
||||
[ -f "$www_dir/www/health/index.json" ] || echo '{ "status": "ok" }' >"$www_dir/www/health/index.json"
|
||||
|
||||
Reference in New Issue
Block a user