Appearance
容器镜像构建与发布
每个服务通常以模块目录作为 Docker build context,生成独立镜像。发布标签应绑定 Git 提交或版本号,不使用不可追溯的 latest 作为生产唯一标识。
bash
mvn -DskipTests package
docker build -t registry.example.com/muotai/muotai-ai:${GIT_SHA} ./muotai-ai
docker push registry.example.com/muotai/muotai-ai:${GIT_SHA}构建后检查:镜像内实际 JAR、监听端口、Nacos 环境变量、时区、非 root 用户、健康检查和文件挂载路径。回滚时同时回滚镜像、配置版本和数据库迁移策略。
AI 镜像的源码约束
当前 muotai-ai/Dockerfile 使用 Java 21 基础镜像、JAVA_OPTS=-Xms512m -Xmx4096m,复制 muotai-ai/muotai-ai-biz/target/muotai-ai-biz.jar,并暴露 6060;模块 application.yml 却默认监听 6062。构建流水线必须在镜像检查中执行 jar 内容检查、端口探测和配置渲染,避免复制旧 target 或启动后端口不一致。
生产镜像应使用提交 SHA/版本标签,挂载 JSONL/session、上传临时目录和必要的证书/Secret,使用非 root 用户并限制 CPU、内存、临时磁盘和文件描述符。不要把 Nacos 密码、模型 Key 或 Docker registry 凭据写入镜像层。
回滚前确认数据库迁移是否向后兼容、旧版本能否读取新的 session schema、toolset/checkpoint 是否需要阻止恢复;镜像回滚不能替代数据补偿。