Fix shared httpd log tailing for dynamically added vhosts
All checks were successful
Cloud Apache Container / Build-and-Push (74) (push) Successful in 1m25s
Cloud Apache Container / Build-and-Push (80) (push) Successful in 2m23s
Cloud Apache Container / Build-and-Push (81) (push) Successful in 2m22s
Cloud Apache Container / Build-and-Push (82) (push) Successful in 1m21s
Cloud Apache Container / Build-and-Push (83) (push) Successful in 1m21s
Cloud Apache Container / Build-and-Push (84) (push) Successful in 1m19s
Cloud Apache Container / Build-and-Push (85) (push) Successful in 2m20s
Cloud Apache Container / Build-FPM-Images (74) (push) Successful in 1m33s
Cloud Apache Container / Build-FPM-Images (80) (push) Successful in 2m15s
Cloud Apache Container / Build-FPM-Images (81) (push) Successful in 2m14s
Cloud Apache Container / Build-FPM-Images (82) (push) Successful in 1m18s
Cloud Apache Container / Build-FPM-Images (83) (push) Successful in 1m16s
Cloud Apache Container / Build-FPM-Images (84) (push) Successful in 1m18s
Cloud Apache Container / Build-FPM-Images (85) (push) Successful in 1m19s
Cloud Apache Container / Build-Shared-httpd (push) Successful in 1m22s

The entrypoint used 'tail -f /var/log/httpd/*' which expands the glob
at startup. Log files created later (when new vhost configs are added)
were never tailed, so 'docker logs' showed nothing for sites added
after the container started.

Replaced with a loop that re-discovers log files every 60 seconds and
restarts tail to include new ones.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-01 22:22:10 -07:00
parent e81b0df5b8
commit e9604b8721

View File

@@ -60,7 +60,18 @@ fi
/usr/sbin/crond /usr/sbin/crond
# Tail Apache logs (becomes PID 1 process) # Tail Apache logs (becomes PID 1 process)
# Use a loop to pick up new log files as vhosts are added.
# tail -f only watches files that exist at start time.
touch /var/log/httpd/error_log touch /var/log/httpd/error_log
tail -f /var/log/httpd/* TAIL_PID=""
while true; do
exit 0 LOG_FILES=$(find /var/log/httpd/ -name '*.log' -o -name '*_log' 2>/dev/null | sort)
if [ -n "$TAIL_PID" ]; then
kill "$TAIL_PID" 2>/dev/null
wait "$TAIL_PID" 2>/dev/null
fi
tail -f $LOG_FILES &
TAIL_PID=$!
# Re-check for new log files every 60 seconds
sleep 60
done