Create entrypoint.sh
Browse files- entrypoint.sh +66 -0
entrypoint.sh
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/bin/bash
|
| 2 |
+
set -e
|
| 3 |
+
|
| 4 |
+
mkdir -p /app/logs 2>/dev/null || true
|
| 5 |
+
|
| 6 |
+
log() {
|
| 7 |
+
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a /app/logs/entrypoint.log 2>/dev/null || echo "$(date '+%Y-%m-%d %H:%M:%S') - $1"
|
| 8 |
+
}
|
| 9 |
+
|
| 10 |
+
log "容器启动中..."
|
| 11 |
+
|
| 12 |
+
SYNC_INTERVAL="${SYNC_INTERVAL:-60}"
|
| 13 |
+
log "设置同步间隔: ${SYNC_INTERVAL}分钟"
|
| 14 |
+
|
| 15 |
+
DB_PATH="${DB_PATH:-/app/db}"
|
| 16 |
+
BACKUP_PATH="${BACKUP_PATH:-/app/backup}"
|
| 17 |
+
REMOTE_BACKUP_DIR="${REMOTE_BACKUP_DIR:-tgdrive_backup}"
|
| 18 |
+
BACKUP_FILENAME="${BACKUP_FILENAME:-tgdrive_db_backup.tar.gz}"
|
| 19 |
+
|
| 20 |
+
mkdir -p "$DB_PATH" 2>/dev/null || true
|
| 21 |
+
mkdir -p "$BACKUP_PATH" 2>/dev/null || true
|
| 22 |
+
chmod -R 777 "$DB_PATH" 2>/dev/null || true
|
| 23 |
+
chmod -R 777 "$BACKUP_PATH" 2>/dev/null || true
|
| 24 |
+
|
| 25 |
+
log "数据库路径: ${DB_PATH}"
|
| 26 |
+
log "备份路径: ${BACKUP_PATH}"
|
| 27 |
+
log "远程备份目录: ${REMOTE_BACKUP_DIR}"
|
| 28 |
+
log "备份文件名: ${BACKUP_FILENAME}"
|
| 29 |
+
|
| 30 |
+
if [ -n "$WEBDAV_URL" ] && [ -n "$WEBDAV_USERNAME" ] && [ -n "$WEBDAV_PASSWORD" ]; then
|
| 31 |
+
log "检测到WebDAV配置,尝试初始同步..."
|
| 32 |
+
|
| 33 |
+
/app/sync-script.sh restore || log "首次恢复尝试失败,可能是首次运行或WebDAV上没有备份或权限问题"
|
| 34 |
+
|
| 35 |
+
log "设置定时同步任务..."
|
| 36 |
+
(
|
| 37 |
+
while true; do
|
| 38 |
+
sleep $((SYNC_INTERVAL * 60))
|
| 39 |
+
/app/sync-script.sh sync >> /app/logs/sync_cron.log 2>&1 || log "同步任务执行失败" >> /app/logs/sync_cron.log 2>&1
|
| 40 |
+
done
|
| 41 |
+
) &
|
| 42 |
+
|
| 43 |
+
log "后台同步服务已启动,每${SYNC_INTERVAL}分钟执行一次"
|
| 44 |
+
else
|
| 45 |
+
log "未检测到WebDAV配置,跳过同步设置"
|
| 46 |
+
fi
|
| 47 |
+
|
| 48 |
+
log "tgDrive 同步版本启动成功"
|
| 49 |
+
|
| 50 |
+
trap_handler() {
|
| 51 |
+
log "接收到停止信号,执行备份..."
|
| 52 |
+
if [ -n "$WEBDAV_URL" ] && [ -n "$WEBDAV_USERNAME" ] && [ -n "$WEBDAV_PASSWORD" ]; then
|
| 53 |
+
/app/sync-script.sh backup || log "备份过程中遇到错误,可能是权限问题"
|
| 54 |
+
log "备份尝试完成,容器即将停止"
|
| 55 |
+
else
|
| 56 |
+
log "未配置WebDAV,跳过备份"
|
| 57 |
+
fi
|
| 58 |
+
exit 0
|
| 59 |
+
}
|
| 60 |
+
|
| 61 |
+
trap trap_handler SIGTERM SIGINT
|
| 62 |
+
|
| 63 |
+
log "启动tgDrive应用..."
|
| 64 |
+
|
| 65 |
+
cd /app
|
| 66 |
+
exec java -jar app.jar "$@"
|