mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2025-11-29 02:42:51 +00:00
48 lines
1.5 KiB
Bash
48 lines
1.5 KiB
Bash
|
|
#!/usr/bin/env sh
|
||
|
|
set -e
|
||
|
|
|
||
|
|
: "${CRON_SCHEDULE:=0 */6 * * *}"
|
||
|
|
: "${DOCKER_PROXY_URL:?DOCKER_PROXY_URL is required}"
|
||
|
|
: "${TARGET_CONTAINER_NAME:?TARGET_CONTAINER_NAME is required}"
|
||
|
|
: "${SHARED_VOLUME_PATH:?SHARED_VOLUME_PATH is required}"
|
||
|
|
|
||
|
|
# Скрипт, который будет исполняться по крону
|
||
|
|
CRON_JOB_SCRIPT="/usr/local/bin/run_update_and_restart.sh"
|
||
|
|
|
||
|
|
cat > "$CRON_JOB_SCRIPT" << 'EOF'
|
||
|
|
#!/usr/bin/env sh
|
||
|
|
set -e
|
||
|
|
|
||
|
|
echo "[$(date)] Starting geodata update..."
|
||
|
|
|
||
|
|
# Обновление геоданных
|
||
|
|
/app/xray-tools.sh update_geodata_in_docker "${SHARED_VOLUME_PATH}"
|
||
|
|
|
||
|
|
echo "[$(date)] Geodata update finished, restarting container..."
|
||
|
|
|
||
|
|
# Рестарт контейнера через Docker Socket Proxy
|
||
|
|
curl -s -X POST \
|
||
|
|
"${DOCKER_PROXY_URL}/containers/${TARGET_CONTAINER_NAME}/restart" \
|
||
|
|
-o /dev/null -w "%{http_code}\n"
|
||
|
|
|
||
|
|
echo "[$(date)] Restart request sent."
|
||
|
|
EOF
|
||
|
|
|
||
|
|
chmod +x "$CRON_JOB_SCRIPT"
|
||
|
|
|
||
|
|
# Создаём кронтаб
|
||
|
|
# Важный момент: переменные окружения надо прокинуть в cron.
|
||
|
|
CRON_ENV_FILE="/env.sh"
|
||
|
|
env | grep -v '^CRON_SCHEDULE=' | sed 's/^/export /' > "$CRON_ENV_FILE"
|
||
|
|
|
||
|
|
# crond не тянет env напрямую, поэтому в крон-строке source env-файла
|
||
|
|
echo "${CRON_SCHEDULE} . ${CRON_ENV_FILE} && ${CRON_JOB_SCRIPT} >> /var/log/cron.log 2>&1" > /etc/crontabs/root
|
||
|
|
|
||
|
|
echo "Starting crond with schedule: ${CRON_SCHEDULE}"
|
||
|
|
mkdir -p /var/log
|
||
|
|
touch /var/log/cron.log
|
||
|
|
|
||
|
|
bash $CRON_JOB_SCRIPT
|
||
|
|
|
||
|
|
# Запускаем crond в foreground
|
||
|
|
exec crond -f -l 2
|