Skip to content

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_PORT02-容器编排配置 使用容器内 HTTP 8888,由 Nginx 终止 TLS。

构建

从仓库根目录执行:

bash
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 命令历史。

bash
docker image inspect spectra-admin:local

AWT 与字体

验证码依赖 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 会随部署策略变化,实际发布前以工作流文件和目标环境为准。

相关

Spectra 代码子项目以 Apache License 2.0 发布。