Files
cache-warmer/warm.sh
2026-01-10 01:20:34 +01:00

52 lines
1.3 KiB
Bash
Executable File

#!/bin/bash
set -e
BASE_URL="${BASE_URL:?BASE_URL env not set}"
FILE_LIST="${FILE_LIST:?FILE_LIST env not set}"
CRON_EXPR="${CRON_EXPR:-0 */12 * * *}"
USER_AGENT="${USER_AGENT:-Mozilla/5.0}"
ACCEPT_ENCODING="${ACCEPT_ENCODING:-br,gzip}"
echo "$(date) - Starting cache warmer for $BASE_URL$FILE_LIST"
echo "Cron schedule: $CRON_EXPR"
cat << EOF > /app/warm_files.sh
#!/bin/sh
set -e
BASE_URL="$BASE_URL"
FILE_LIST="$FILE_LIST"
USER_AGENT="$USER_AGENT"
ACCEPT_ENCODING="$ACCEPT_ENCODING"
echo "\$(date) - Fetching file list from \$BASE_URL\$FILE_LIST"
# WAŻNE: --compressed automatycznie dekompresuje odpowiedź
FILES=\$(curl -s --compressed -A "\$USER_AGENT" "\$BASE_URL\$FILE_LIST")
if [ -z "\$FILES" ]; then
echo "\$(date) - File list empty"
exit 1
fi
echo "\$FILES" | while read -r url; do
if [ -n "\$url" ]; then
echo "\$(date) - Warming \$BASE_URL/\$url"
curl -s -o /dev/null -A "\$USER_AGENT" -H "Accept-Encoding: \$ACCEPT_ENCODING" "\$BASE_URL/\$url"
fi
done
echo "\$(date) - Warming completed"
EOF
chmod +x /app/warm_files.sh
touch /var/log/cron.log
echo "$(date) - Running initial warming..."
/app/warm_files.sh
echo "$CRON_EXPR /app/warm_files.sh >> /var/log/cron.log 2>&1" > /etc/crontabs/root
echo "$(date) - Starting crond..."
crond -f -l 2 &
tail -f /var/log/cron.log