将 OKR 服务构建为单个 Docker 镜像,同时将 SQLite 数据库和备份永久保存在宿主机 ./data 目录。升级时只重新构建镜像并重建容器,不复制、覆盖或删除宿主机数据库。
./data 绑定到容器 /app/data。jdbc:sqlite:/app/data/okr-performance.db,备份目录固定为 /app/data/backups。/app/data 可写。数据库文件不存在时不创建空文件,由现有 DatabaseInitializer 创建 schema、DatabaseMigrationRunner 执行迁移、DataInitializer 初始化基础数据。docker compose build 与 docker compose up -d --force-recreate 只替换镜像和容器。Compose 不声明匿名卷,不执行数据库复制,.dockerignore 排除 data/,因此数据库不会进入镜像层,也不会被镜像升级覆盖。
自动检查 Docker 配置契约,并执行真实容器验收:首次启动生成数据库、写入哨兵数据、重建容器、确认同一数据库和哨兵数据仍存在。