GitHub Actions自动化部署Spring Boot至阿里云镜像仓库
墨韵云阁
0 阅读
0
生活随笔
使用 GitHub Actions 实现 Spring Boot 项目打包并推送至阿里云镜像仓库
GitHub Actions 配置文件
在项目根目录下创建 .github/workflows/docker-publish.yml 文件,内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
name: 构建并推送至阿里云容器镜像
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 }} 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 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 配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| FROM maven:3.6.3-openjdk-8 AS builder
WORKDIR /app
COPY . .
RUN mvn install -Dmaven.test.skip=true -P pro
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
COPY --from=builder /app/blog/target/*.jar app.jar
EXPOSE 9003
ENTRYPOINT ["java", "-jar", "app.jar"]
|
[!TIP] 提示
Dockerfile 中已包含完整的项目构建配置,可与 GitHub Actions 工作流无缝配合,实现从代码到镜像的全自动打包和部署流程。
评论