在现代微服务架构中,容器化和自动化流水线是必备技能。本文将带你完成两个关键步骤:
- Spring Boot 项目容器化 —— 使用多阶段 Dockerfile 构建轻量、安全的运行镜像。
- CI/CD 自动化 —— 借助 GitLab CI/CD,将镜像自动构建并推送到 Harbor 私有仓库。
参考阅读:Java Spring Boot 项目 Docker 容器化部署教程
一、Spring Boot 项目容器化
1. Dockerfile 多阶段构建
# 构建阶段
FROM maven:3.9.6-eclipse-temurin-17 AS builder
WORKDIR /build
COPY . .
RUN --mount=type=cache,target=/root/.m2 mvn -B clean package -DskipTests
# 运行阶段
FROM eclipse-temurin:17-jre-alpine
RUN addgroup -S sdkj && adduser -S sdkj -G sdkj
WORKDIR /app
COPY --from=builder /build/target/*.jar ./app.jar
RUN mkdir -p /app/logs && chown -R sdkj:sdkj /app/logs
ENV TZ=Asia/Shanghai
ENV JAVA_OPTS="-Xms512m -Xmx1024m"
ENV SPRING_PROFILE=prod
EXPOSE 48087
USER sdkj
ENTRYPOINT ["sh", "-c"]
CMD ["exec java $JAVA_OPTS -jar app.jar $ARGS"]
关键点:
- 多阶段构建:减少最终镜像体积
- 非 root 用户:提升安全性
- 日志目录赋权:避免 logback 报错
- 环境变量可覆盖:灵活配置 JVM 与 Profile
二、GitLab CI/CD 自动化构建与推送 Harbor
参考阅读:Spring Boot 项目 GitLab CI/CD 自动构建并推送到 Harbor 教程
1. 环境准备
- GitLab Runner(Docker executor,挂载宿主机 Docker)
- Harbor 私有仓库(已创建项目与机器人账号)
- GitLab CI/CD 变量配置:
HARBOR_USER/HARBOR_PASSCI_REGISTRY=192.168.0.12:5080
2. .gitlab-ci.yml 核心配置
stages:
- build
- push
variables:
DOCKER_HOST: unix:///var/run/docker.sock
DOCKER_BUILDKIT: "1"
REGISTRY: 192.168.0.12:5080
PROJECT: ayy-server
IMAGE_NAME: ayy-server-java17
.docker-base: &docker-base
image: docker:20.10.24
before_script:
- echo "$HARBOR_PASS" | docker login -u "$HARBOR_USER" --password-stdin $REGISTRY
build-test:
<<: *docker-base
stage: build
script:
- export IMAGE_TAG="test-${CI_COMMIT_SHORT_SHA}"
- docker build -t $REGISTRY/$PROJECT/$IMAGE_NAME:$IMAGE_TAG .
- echo "IMAGE_TAG=$IMAGE_TAG" > build.env
artifacts:
reports:
dotenv: build.env
only:
- main
push-test:
<<: *docker-base
stage: push
dependencies: [build-test]
script:
- docker push $REGISTRY/$PROJECT/$IMAGE_NAME:$IMAGE_TAG
only:
- main
3. 流程说明
- main 分支:构建并推送测试镜像(
test-*标签) - tag 发布:构建并推送生产镜像(
vX.Y.Z+prod-latest) - 缓存镜像:利用 BuildKit 内联缓存加速二次构建
- 清理策略:推送后清理 Runner 本地镜像,避免磁盘膨胀
三、完整流程回顾
- 编写 Dockerfile —— 多阶段构建、非 root、安全可配置
- 本地验证 ——
docker build+docker run - 配置 GitLab Runner —— 挂载宿主机 Docker,信任 Harbor 证书
- 编写 CI/CD 流水线 —— 分支/标签策略、缓存加速、推送 Harbor
- 验证与上线 —— Harbor 中查看镜像,部署到测试/生产环境
四、总结
通过本文,读者可以从零到一完成:
- Spring Boot 项目容器化(Dockerfile 最佳实践)
- CI/CD 自动化(GitLab Runner + Harbor 推送)
最终实现 代码提交 → 自动构建 → 镜像推送 → 部署上线 的完整闭环。
Spring Boot Docker化与CI/CD集成

6436

被折叠的 条评论
为什么被折叠?



