52 lines
1.3 KiB
Bash
Executable File
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 |