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>
78 lines
2.3 KiB
Bash
Executable File
78 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
export CONTAINER_ROLE="httpd_only"
|
|
|
|
if [ -z "$environment" ]; then
|
|
environment="PROD"
|
|
fi
|
|
|
|
# Generate self-signed SSL cert if not already present
|
|
if [ ! -f /etc/pki/tls/certs/localhost.crt ]; then
|
|
openssl req -newkey rsa:2048 -nodes \
|
|
-keyout /etc/pki/tls/private/localhost.key \
|
|
-x509 -days 3650 -subj "/CN=localhost" \
|
|
-out /etc/pki/tls/certs/localhost.crt
|
|
fi
|
|
|
|
# Create log directory
|
|
mkdir -p /var/log/httpd
|
|
|
|
# Remove default configs that conflict
|
|
rm -f /etc/httpd/conf.d/userdir.conf
|
|
|
|
# Configure RemoteIP for Docker network
|
|
docker_network=$(ip addr show | grep eth0 | grep inet | awk -F " " '{print $2}')
|
|
if [ -n "$docker_network" ]; then
|
|
echo "RemoteIPInternalProxy $docker_network" >> /etc/httpd/conf.d/remoteip.conf
|
|
fi
|
|
|
|
# Detect memory and calculate Apache MPM tuning
|
|
source /scripts/detect-memory.sh
|
|
echo "Container memory: ${CONTAINER_MEMORY_MB}MB | Apache workers=${APACHE_MAX_REQUEST_WORKERS} | Role=${CONTAINER_ROLE}"
|
|
|
|
# Generate MPM tuning config
|
|
/scripts/create-apache-mpm-config.sh
|
|
|
|
# Write SSL global config (matches standalone CAC behavior)
|
|
cat <<'EOF' > /etc/httpd/conf.d/ssl-global.conf
|
|
Listen 443 https
|
|
SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog
|
|
SSLSessionCache shmcb:/run/httpd/sslcache(512000)
|
|
SSLSessionCacheTimeout 300
|
|
SSLCryptoDevice builtin
|
|
EOF
|
|
|
|
# Disable the default ssl.conf if present (we use per-vhost SSL)
|
|
if [ -f /etc/httpd/conf.d/ssl.conf ]; then
|
|
mv /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.bak
|
|
fi
|
|
|
|
# Ensure vhosts directory exists and is included
|
|
mkdir -p /etc/httpd/conf.d/vhosts
|
|
if ! grep -q 'IncludeOptional conf.d/vhosts/' /etc/httpd/conf/httpd.conf; then
|
|
echo 'IncludeOptional conf.d/vhosts/*.conf' >> /etc/httpd/conf/httpd.conf
|
|
fi
|
|
|
|
# Start Apache
|
|
/usr/sbin/httpd -k start
|
|
|
|
# Start cron for log rotation
|
|
/usr/sbin/crond
|
|
|
|
# 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
|
|
TAIL_PID=""
|
|
while true; do
|
|
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
|