Docker 部署
Docker 构建命令可以复用;镜像仓库、Tag、端口、Secret、数据卷和证书属于部署环境配置。
单体部署边界
当前镜像只运行 spectra-admin 单体多模块应用。容器通过环境变量连接 PostgreSQL、Redis 和可选的 S3,不依赖 Nacos、服务注册中心、远程配置中心或其他微服务运行时组件;部署时不需要额外启动注册中心或配置中心容器。
模块是否启用由 spectra-launch 的显式 Maven 依赖和启动配置 spectra.modules.<name>.enabled 共同决定,不通过服务发现或远程配置动态改变。开关只在启动时读取;修改模块依赖或模块装配配置必须重新构建并验证镜像,不能依赖运行时注册回调。
构建前提
- 使用
spectra-admin/mvnw生成 Spring Boot 可执行 JAR;在 WSL 中通过 mise 提供 Java。 - Dockerfile 位于
spectra-admin/spectra-launch/Dockerfile。 - Dockerfile 的构建上下文必须是
spectra-launch/,JAR_FILE只传 JAR 文件名。 - 运行镜像时显式配置
SERVER_PORT;02-容器编排配置 使用容器内 HTTP 8888,由 Nginx 终止 TLS。
构建
从仓库根目录执行:
cd spectra-admin
./mvnw clean package -DskipTests
jar=$(find spectra-launch/target -maxdepth 1 -type f \
-name 'spectra-launch-*.jar' ! -name '*.jar.original' -printf '%f\n' | head -n 1)
cd spectra-launch
docker build --build-arg "JAR_FILE=$jar" -t spectra-admin:local .spectra-admin:local 是本机标签,可直接用于本机验证。推送到镜像仓库时,仓库地址和版本 Tag 必须按发布流程确定;生产部署不要长期跟随 latest。
本机容器验证
后端仍需要完整的数据库、Redis 和 S3 环境变量。推荐使用 02-容器编排配置 集中配置,不要把真实值写进 Dockerfile 或 docker run 命令历史。
docker image inspect spectra-admin:localAWT 与字体
验证码依赖 Java AWT 字体渲染。修改运行时基础镜像或改用 Spring Boot buildpack 后,必须验证镜像包含 java.desktop、fontconfig/freetype 和可用字体。精简 JRE/buildpack 可能出现 Problem reading font data;这不是本地完整 JDK 构建失败。
CI/CD
后端子项目的 .github/workflows/spectra-minimal-image.yml 是当前 CI 入口。工作流、镜像仓库权限和发布 Tag 会随部署策略变化,实际发布前以工作流文件和目标环境为准。