entrypoint.sh 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #!/bin/bash
  2. set -e
  3. # 检查配置文件
  4. if [ ! -f "/app/config/config.yaml" ] || [ ! -f "/app/config/frequency_words.txt" ]; then
  5. echo "❌ 配置文件缺失"
  6. exit 1
  7. fi
  8. # 保存环境变量
  9. env >> /etc/environment
  10. case "${RUN_MODE:-cron}" in
  11. "once")
  12. echo "🔄 单次执行"
  13. exec /usr/local/bin/python main.py
  14. ;;
  15. "cron")
  16. # 生成 crontab
  17. echo "${CRON_SCHEDULE:-*/30 * * * *} cd /app && /usr/local/bin/python main.py" > /tmp/crontab
  18. echo "📅 生成的crontab内容:"
  19. cat /tmp/crontab
  20. if ! /usr/local/bin/supercronic -test /tmp/crontab; then
  21. echo "❌ crontab格式验证失败"
  22. exit 1
  23. fi
  24. # 立即执行一次(如果配置了)
  25. if [ "${IMMEDIATE_RUN:-false}" = "true" ]; then
  26. echo "▶️ 立即执行一次"
  27. /usr/local/bin/python main.py
  28. fi
  29. # 启动 Web 服务器(如果配置了)
  30. if [ "${ENABLE_WEBSERVER:-false}" = "true" ]; then
  31. echo "🌐 启动 Web 服务器..."
  32. /usr/local/bin/python manage.py start_webserver
  33. fi
  34. echo "⏰ 启动supercronic: ${CRON_SCHEDULE:-*/30 * * * *}"
  35. echo "🎯 supercronic 将作为 PID 1 运行"
  36. exec /usr/local/bin/supercronic -passthrough-logs /tmp/crontab
  37. ;;
  38. *)
  39. exec "$@"
  40. ;;
  41. esac