#!/bin/sh set -eu DATA_DIR=${APP_DATA_DIR:-/app/data} BACKUP_DIR=${APP_BACKUP_DIR:-$DATA_DIR/backups} DATABASE_FILE=${APP_DATABASE_FILE:-$DATA_DIR/okr-performance.db} umask 027 case ",${SPRING_PROFILES_ACTIVE:-}," in *,prod,*) JWT_SECRET=${APP_JWT_SECRET:-} if [ "${#JWT_SECRET}" -lt 32 ]; then echo "错误:生产环境 APP_JWT_SECRET 长度必须至少 32 字符。" >&2 echo "请复制 .env.example 为 .env,设置随机密钥后重新启动。" >&2 exit 1 fi ;; esac mkdir -p "$DATA_DIR" "$BACKUP_DIR" WRITE_PROBE="$DATA_DIR/.write-probe-$$" if ! touch "$WRITE_PROBE" 2>/dev/null; then echo "错误:数据库目录不可写:$DATA_DIR" >&2 echo "请确认宿主机目录存在且 Docker 对其拥有写权限。" >&2 exit 1 fi rm -f "$WRITE_PROBE" if [ -f "$DATABASE_FILE" ]; then echo "使用现有 SQLite 数据库:$DATABASE_FILE" else echo "未发现 SQLite 数据库,将由应用执行首次初始化:$DATABASE_FILE" fi exec "$@"