Github Actions实现Spring Boot自动化部署(第二弹)
Github Actions实现Spring Boot自动化部署(第二弹)
前言
今天就来讲述一下如何使用GitHub结合Actions实现Spring Boot程序从提交代码到打包、容器化、部署全过程自动化。首先咱们得现有一个能够在本地运行的Spring Boot程序,并且在Github上拥有一个仓库。
一、自动化部署
1.1 提交代码到Github

1.2 设置服务器密钥、GitHub私钥、DockerHub账号
| secret | value | remark |
|---|---|---|
| DOCKER_HUB_ACCESS_TOKEN | 1234567890 | dockerhub账号私钥 |
| DOCKER_HUB_USERNAME | bubaiwantong | dockerhub账号 |
| SERVER_HOST | 127.0.0.1 | 服务器IP地址 |
| SERVER_PASSWORD | 1234567890 | 服务器密码 |
| SERVER_PORT | 22 | 服务器开放端口 |
| SERVER_PRIVATE_KEY | 1234567890 | 服务器私钥 |
| SERVER_USERNAME | root | 服务器账号 |
| TOKEN | 1234567890 | Github的Token |
1.2.1 设置服务器密钥

1.2.2 设置Github私钥




1.2.3 设置DockerHub账号

1.3 新增工作流文件

maven.yml文件
name: Deploy with dockeron:push:# 分支branches: [ "master" ]pull_request:branches: [ "master" ]jobs:compile:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v2- name: Set up JDK 21uses: actions/setup-java@v2with:java-version: '21'distribution: 'adopt'# maven缓存,不加的话每次都会去重新拉取,会影响速度- name: Dependies Cacheuses: actions/cache@v2with:path: ~/.m2/repositorykey: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}restore-keys: |${{ runner.os }}-maven-# 编译打包- name: Build with Mavenrun: |mvn package -Dmaven.test.skip=true# 登录Docker Hub- name: Login to Docker Hubuses: docker/login-action@v1with:username: ${{ secrets.DOCKER_HUB_USERNAME }}password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}- name: Set up Docker Buildxid: buildxuses: docker/setup-buildx-action@v1#build镜像并push到中央仓库中- name: Build and pushid: docker_builduses: docker/build-push-action@v2with:context: ./file: ./Dockerfilepush: truetags: ${{secrets.DOCKER_HUB_USERNAME}}/back:latest#push后,用ssh连接服务器执行脚本- name: SSH
# uses: fifsky/ssh-action@masteruses: appleboy/ssh-action@masterwith:
# command: |
# cd /develop/work/education-back-server
# sh start.shhost: ${{secrets.SERVER_HOST}}username: ${{secrets.SERVER_USERNAME}}port: ${{secrets.SERVER_PORT }}
# key: ${{secrets.SERVER_PRIVATE_KEY}}password: ${{secrets.SERVER_PASSWORD}}script:sh /develop/work/education-back-server/start.sh
# sh start.sh
1.4 新增Dockerfile文件

Dockerfile文件
#基础镜像
FROM bubaiwantong/openjdk:21-jdk-alpine#安装字体
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && apk add --update ttf-dejavu fontconfig && rm -rf /var/cache/apk/* && mkfontscale && mkfontdir && fc-cache
RUN apk add --update ttf-dejavu fontconfig && rm -rf /var/cache/apk/*#添加文件
ADD education-back/target/back-0.0.1-SNAPSHOT.jar /usr/local
RUN chmod u+x /usr/local/back-0.0.1-SNAPSHOT.jar#设置时区
RUN rm -f /etc/localtime \
&& ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone#挂载目录到容器
#VOLUME ["/data"]
#环境变量设置
#ENV #开放端口
EXPOSE 8088
#启动时执行的命令
CMD ["/bin/bash"]
#启动时执行的命令
ENTRYPOINT ["java","-jar","/usr/local/back-0.0.1-SNAPSHOT.jar"]
1.5 编写服务器启动脚本
start.sh文件
#!/bin/bash
docker pull bubaiwantong/back:latestdocker tag docker.io/bubaiwantong/back:latest back:latestdocker stop backdocker rm backdocker run --name back -p 8088:8088 -d back:latestdocker image prune -
2.7 开启自动化部署
提交代码到master,在GitHub中的Actions即可发现项目正在自动化部署

在浏览器地址栏打开网站首页 就可以发现自动化部署成功啦!

三、写在最后
如果这篇【文章】有帮助到你,希望可以给【JavaGPT】点个赞👍,创作不易,如果有对【后端技术】、【前端领域】感兴趣的小可爱,也欢迎关注❤️❤️❤️ 【JavaGPT】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💝💝💝!
相关文章:
Github Actions实现Spring Boot自动化部署(第二弹)
Github Actions实现Spring Boot自动化部署(第二弹) 前言 今天就来讲述一下如何使用GitHub结合Actions实现Spring Boot程序从提交代码到打包、容器化、部署全过程自动化。首先咱们得现有一个能够在本地运行的Spring Boot程序,并且在Githu…...
【Python机器学习】sklearn.datasets分类任务数据集
如何选择合适的数据集进行机器学习的分类任务? 选择合适的数据集是进行任何机器学习项目的第一步,特别是分类任务。数据集是机器学习任务成功的基础。没有数据,最先进的算法也无从谈起。 本文将专注于sklearn.datasets模块中用于分类任务的数据集。这些数据集覆盖了各种场…...
华为OD 数组去重和排序(100分)【java】A卷+B卷
华为OD统一考试A卷B卷 新题库说明 你收到的链接上面会标注A卷还是B卷。目前大部分收到的都是B卷。 B卷对应20022部分考题以及新出的题目,A卷对应的是新出的题目。 我将持续更新最新题目 获取更多免费题目可前往夸克网盘下载,请点击以下链接进入ÿ…...
黑客技术(网络安全)学习
1.网络安全是什么 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高; 二、则是发展相对成熟…...
【算法|动态规划No.28】leetcode1312. 让字符串成为回文串的最少插入次数
个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望…...
AWS SAP-C02教程10-其它服务
接下来介绍的内容是一些SAP-C02考试会涉及到的,但是目前无法很好将其归类,暂且放在其它服务中 目录 1 AWS WorkSpaces2 AWS APP Stream 2.02.1 WorkSpaces vs APP Stream 2.03 AWS Device Farm4 AWS AppSync5 AWS Outposts6 AWS WaveLength7 AWS Local Zones8 AWS Cloud Map…...
C语言 力扣习题 10.19日 day1
1.两整数相加 给你两个整数 num1 和 num2,返回这两个整数的和。 示例 1: 输入:num1 12, num2 5 输出:17 解释:num1 是 12,num2 是 5 ,它们的和是 12 5 17 ,因此返回 17 。 示例 …...
【Linux升级之路】8_Linux多线程
目录 一、【Linux初阶】多线程1 | 页表的索引作用,线程基础(优缺点、异常、用途),线程VS进程,线程控制,C多线程引入二、【Linux初阶】多线程2 | 分离线程,线程库,线程互斥࿰…...
FFT64点傅里叶变换verilog蝶形运算,代码和视频
名称:FFT64点verilog傅里叶变换 软件:Quartus 语言:Verilog 代码功能: 使用verilog代码实现64点FFT变换,使用蝶形运算实现傅里叶变换 演示视频:http://www.hdlcode.com/index.php?mhome&cView&…...
学习JS闭包
作用域 作用域分为:全局作用域和函数作用域。链式作用域:子对象会一级一级往上查找父对象的变量。 什么是闭包? 闭包可以理解为定义在函数内部的函数,是由一个函数以及与其相关的引用环境组合而成的实体。可以在函数内部访问外部函数的变量&a…...
在Mac上安装配置svn
版本控制系统对于程序员来说是至关重要的工具,而Subversion(简称svn)就是一种流行的版本控制系统。本文将指导你在Mac上安装并配置svn,让你更好地管理代码版本。 安装svn 首先,我们需要从Subversion官方网站下载适合…...
数据结构----算法--五大基本算法(这里没有写分支限界法)和银行家算法
数据结构----算法–五大基本算法(这里没有写分支限界法)和银行家算法 一.贪心算法 1.什么是贪心算法 在有多个选择的时候不考虑长远的情况,只考虑眼前的这一步,在眼前这一步选择当前的最好的方案 二.分治法 1.分治的概念 分…...
【七:docken+jenkens部署】
一:腾讯云轻量服务器docker部署Jenkins https://blog.csdn.net/qq_35402057/article/details/123589493 步骤1:查询jenkins版本:docker search jenkins步骤2:拉取jenkins镜像 docker pull jenkins/jenkins:lts步骤3:…...
智能水印相机微信小程序源码
相信大家日常在生活中或者工作中都有使用过水印相机来拍照记录吧,但是又要在手机上面多下载一个APP。 那么小编今天给大家带来一款智能水印相机,拍照自动添加时间、地点、经纬度等水印文字,可用于工作考勤、学习打卡、工作取证等,…...
一、2023 CISSP认证介绍
目录 1.CISSP概况 2.CISSP考题分析 3.备考建议 1.CISSP概况 参考:...
redis 实现互相关注功能
突然想到平时的设计软件如何实现互相关注这个功能,然后查询后大致思路如下: 可以使用 Redis 数据库来存储关注关系。 在社交网络应用程序中,互相关注功能(也称为双向关注或好友关系)是一种常见的功能,允许…...
【代码随想录】算法训练营 第十一天 第五章 栈与队列 Part 2
20. 有效的括号 题目 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一…...
mysql 启动报错 Can t change dir to xxx, No such file or directory 配置错误或挂载导致
省流: 挂载的话,使用 /etc/fstab 放fstab里会在程序启动前加载NFS文件系统,放rc.local里往往造成程序启动加载时找不到路径。 正文: 在企业中,服务器重启,有时候会遇到mysql 启动报错 Cant change dir …...
AWS SAA-C03考试知识点整理
S3: 不用于数据库功能 分类: S3 Standard :以便频繁访问 S3 Standard-IA 或 S3 One Zone-IA : 不经常访问的数据 Glacier: 最低的成本归档数据 S3 Intelligent-Tiering智能分层 :存储具有不断变化或未知访问…...
HugeGraph 部署和Hubble1.0.0的数据导入Bug修复
背景 HugeGraph 安装部署了最新版本1.0.0,发现它的 Web 工具 Hubble 有一个大 Bug。数据导入的时候,配置节点属性映射这个选项时,下拉框只有一个选项,但实际上,元数据配置中的属性有3个,这个 Bug 是怎么产…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
基于Java+VUE+MariaDB实现(Web)仿小米商城
仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意:运行前…...
