使用 GitHub Actions 实现 Spring Boot 项目打包并推送至阿里云镜像仓库
GitHub Actions 配置文件
在项目根目录下创建 .github/workflows/docker-publish.yml
文件,内容如下:
# 此工作流用于构建 Spring Boot 项目并推送 Docker 镜像至阿里云容器镜像服务 # 更多信息请参考:https://docs.github.com/en/actions name: 构建并推送至阿里云容器镜像 # 触发条件:推送到 master 分支或创建 v 开头的标签时触发,同时监控 master 分支的拉取请求 on: push: branches: [ master ] tags: [ 'v*' ] pull_request: branches: [ master ] jobs: build: runs-on: ubuntu-latest steps: - name: 检出代码 uses: actions/checkout@v3 - name: 登录阿里云容器镜像服务 uses: aliyun/acr-login@v1 with: login-server: ${{ secrets.ALIYUN_ACR_REGISTRY }} # 示例:registry.cn-beijing.aliyuncs.com username: ${{ secrets.ALIYUN_ACR_USERNAME }} password: ${{ secrets.ALIYUN_ACR_PASSWORD }} - name: 构建并推送 Docker 镜像 env: ACR_REGISTRY: ${{ secrets.ALIYUN_ACR_REGISTRY }} ACR_NAMESPACE: ${{ secrets.ALIYUN_ACR_NAMESPACE }} # 命名空间 DOCKER_VERSION: latest IMAGE_NAME: thrive-blog # 镜像名称 run: | # 构建镜像 docker build -t $ACR_REGISTRY/$ACR_NAMESPACE/$IMAGE_NAME:$DOCKER_VERSION . # 推送镜像至仓库 docker push $ACR_REGISTRY/$ACR_NAMESPACE/$IMAGE_NAME:$DOCKER_VERSION - name: 连接服务器并部署应用 uses: appleboy/ssh-action@v1 with: host: ${{ secrets.REMOTE_HOST }} username: ${{ secrets.REMOTE_USER }} key: ${{ secrets.SSH_PRIVATE_KEY }} port: 22 script: | echo "开始执行服务器部署命令" # 停止并移除旧容器 docker stop thrive-blog || true docker rm thrive-blog || true # 清理旧镜像并拉取最新镜像 docker rmi registry.cn-chengdu.aliyuncs.com/thrivex-blog/thrive-blog:latest || true docker pull registry.cn-chengdu.aliyuncs.com/thrivex-blog/thrive-blog:latest # 使用 Docker Compose 重新部署应用 cd /root/thrive-blog docker-compose up -d echo "服务器部署完成"
!NOTE 配置说明
- 分支配置:请根据实际项目需求调整监控的分支名称
- ALIYUN_ACR_REGISTRY:阿里云容器镜像服务地址,例如:registry.cn-beijing.aliyuncs.com
- ALIYUN_ACR_USERNAME:阿里云账号用户名
- ALIYUN_ACR_PASSWORD:阿里云账号密码
- ALIYUN_ACR_NAMESPACE:容器镜像服务的命名空间
- REMOTE_HOST:服务器 IP 地址
- REMOTE_USER:服务器用户名
- SSH_PRIVATE_KEY:服务器 SSH 私钥
Dockerfile 配置文件
# 使用 Maven 和 JDK 8 作为构建环境 FROM maven:3.6.3-openjdk-8 AS builder # 设置工作目录 WORKDIR /app # 复制项目文件 COPY . . # 执行 Maven 构建,跳过测试阶段以提高构建效率 RUN mvn install -Dmaven.test.skip=true -P pro # 使用轻量级 JRE 环境作为运行时镜像 FROM openjdk:8-jre-alpine # 维护者信息 LABEL maintainer="1141306760@qq.com" # 设置时区为上海 ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # 设置工作目录 WORKDIR /app # 从构建阶段复制生成的 Jar 文件 COPY --from=builder /app/blog/target/*.jar app.jar # 声明应用端口 EXPOSE 9003 # 使用 exec 格式启动应用,确保正确接收系统信号 ENTRYPOINT ["java", "-jar", "app.jar"]
!TIP 提示 Dockerfile 中已包含完整的项目构建配置,可与 GitHub Actions 工作流无缝配合,实现从代码到镜像的全自动打包和部署流程。
评论区
评论加载中...