39 lines
998 B
Bash
39 lines
998 B
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
export TZ="${TZ:-Asia/Shanghai}"
|
|
TASKS_FILE="${DQD_TASKS_FILE:-/app/config/crawler_tasks.yaml}"
|
|
PYTHON_BIN="${PYTHON_BIN:-/usr/local/bin/python}"
|
|
|
|
mkdir -p /app/logs /app/data/locks /etc/sport-era-crawler
|
|
|
|
if [ "$#" -gt 0 ]; then
|
|
exec "$@"
|
|
fi
|
|
|
|
python - <<'PY'
|
|
import os
|
|
import shlex
|
|
from pathlib import Path
|
|
|
|
env_file = Path("/etc/sport-era-crawler/env.sh")
|
|
with env_file.open("w", encoding="utf-8") as fp:
|
|
for key, value in sorted(os.environ.items()):
|
|
if key.startswith("DQD_") or key in {"TZ", "PYTHONPATH", "PYTHONUNBUFFERED"}:
|
|
fp.write(f"export {key}={shlex.quote(value)}\n")
|
|
env_file.chmod(0o600)
|
|
PY
|
|
|
|
cd /app
|
|
"${PYTHON_BIN}" scripts/docker_task_runner.py render-cron \
|
|
--tasks "${TASKS_FILE}" \
|
|
--output /etc/cron.d/sport-era-crawler \
|
|
--python-bin "${PYTHON_BIN}" \
|
|
--app-dir /app
|
|
|
|
touch /var/log/cron.log
|
|
echo "[crawler] cron file rendered from ${TASKS_FILE}"
|
|
cat /etc/cron.d/sport-era-crawler
|
|
|
|
exec cron -f
|