SpringCloud+Jenkins+Docker持续部署积木学堂[谷粒学院]

【项目笔记】SpringCloud+Jenkins+Docker持续部署积木学堂

写在前面

本项目搞了三天两夜。。

好多东西不太理解,网上也搜不到答案,只能一点点的试,而且最开始目的是想压榨到服务器极限,

最后虽然成功部署,可是一段时间就会有微服务被kill掉。所以跟朋友又借了一台,各占一半内存,稳定性还高。

先说下准备工作

A:部署了九个微服务 (需要安装git,java,maven,docker)

B:部署了Mysql,Nacos,Redis,前端项目(需要安装docker,node,nginx)

image-20200819181312171

image-20200819180835015

image-20200819180909122

动机

一开始想把积木学堂部署到阿里云送的那个半年的主机。

本项目一共九个微服务,加上服务器还需要mysql,redis,nacos三个服务。还可能会把前端也部署上去。

小伙伴们都说可能部署不了。所以为了不浪费时间,先测试一下使用内存。

(先看写在前面)

准备工作

首先打开Java自带的性能监测工具jvisualvm

就在java安装目录那个bin里面 jvisualvm.ext

打开之后啥也没干。发现这么一个现象。应该就是传说中jvm自动回收了

(这个是网关微服务,大概还在75M就自动回收了)

image-20200817180023623

再看一下课程微服务edu,毕竟核心功能,发现他是400M才回收

image-20200817180357252

http://localhost:8110/admin/edu/teacher/list

开始搞事情,打开JMeter

image-20200817180443858

设置20线程,每个100条,我发现到了400M回收了,那我改一下。

image-20200817180629335

image-20200817180809858

依然400M回收了。如果大家同时400M 九个微服务,加上mysql之类的,肯定不够。

那我给他设置一个最大内存,看一下,会不会报错!!

-Xms64M -Xmx64M -XX:PermSize=512M -XX:MaxPermSize=1024M

50线程,每个200条共用12s,其实我觉得很顺滑啊。于是乎,我全部改了一下

image-20200817181415403

我重启了这些服务

image-20200817182215686

并没有出现可能的故障,也不确定这种方法是否准确,先继续往下做

正式开始

好 全部关闭!开始部署。应湖总要求。我重装了一下服务器,从头开始

简介

部署有两种方式

1.服务器安装java环境。

然后把打包的jar包扔上去,运行一下。

2.持续集成

持续集成(简称CI)指的是,频繁的(一天多次)将代码集成到主干。

持续部署(CD)

持续集成的目的,就是让产品快速迭代,同时还能保持高质量。

简单来说就是把代码提交到git上面,就自动根据规则部署成服务。

那这里使用第二种进行部署。

Jenkins介绍

Jenkins在这里充当了一个自动构建的角色。无需人工干预。一个配置简单和使用方便的持续集成服务器,或许可以写一个脚本,监控git是否有更新,有的话就下载下来,package一下。但是他最强大的功能是他有很多插件,比如邮件发送

项目部署

安装软件

我的Linux服务器是centon7

1.安装Java

查找java相关的列表

yum -y list java*

安装jdk

http://apache.apooloo.cn/#/down/f1b54d77df533af9d9de55cf3f4e2cea

cd /usr/local 放到此目录

tar -zxvf jdk-8u202-linux-x64.tar.gz

建立软连接

ln -s /usr/local/jdk1.8.0_202/ /usr/local/jdk

完成安装后验证

java -version

配置环境变量

vim /etc/profile

在文件最后加入:

#set java environment
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

修改/etc/profile之后让其生效

source /etc/profile

2.安装Maven

yum -y list maven* #查看了一下发现版本都特别低,跟平时用的不太一样,为了安全,还是手动安装吧

官网下载好托到/usr/local

image-20200817191521061

解压

cd /usr/local

tar -zvxf apache-maven-3.6.3-bin.tar.gz

编辑文件

cd apache-maven-3.6.3

vim conf/settings.xml

找到localRepository

<localRepository>/opt/jarstore</localRepository>

找到mirror

<mirror>
	 <id>alimaven</id>
 	<mirrorOf>central</mirrorOf>
 	<name>aliyun maven</name>
 	<url>https://maven.aliyun.com/repository/central</url>
</mirror>

<mirror> 
	<id>alimaven</id> 
	<name>aliyun maven</name> 
	<url>http://maven.aliyun.com/nexus/content/groups/public/</url> 
 	<mirrorOf>central</mirrorOf> 
</mirror> 

你还没有jarstore文件夹

cd /opt

mkdir jarstore

配置环境变量

vim /etc/profile

在文件最后加入:

export MAVEN_HOME=/usr/local/apache-maven-3.6.3
export PATH=$MAVEN_HOME/bin:$PATH 

修改/etc/profile之后让其生效

source /etc/profile

3.安装Git

yum -y install git

4.安装Docker

安装些必要的工具

yum install -y yum-utils device-mapper-persistent-data lvm2

添加软件源信息

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新并安装Docker-CE

yum makecache fast

yum -y install docker-ce

开启Docker服务

service docker start

这里到另一台服务器B也安装Docker,然后开始安装下面软件

安装Mysql

docker pull mysql #我这里直接装最新版了

然后创建一个外部目录,用来映射数据之类的

mkdir /opt/mysql

运行mysql

docker run -p 3306:3306 --name mymysql -v /opt/mysql/conf:/etc/mysql/conf.d -v /opt/mysql/logs:/logs -v /opt/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql

然后远程连接一下(如果你的服务器安全组规则没有配置,记得去开放下3306

  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
Jenkins是一款开源的持续集成工具,它可以帮助开发团队自动化地构建、测试和部署软件项目。在Jenkins中配置Docker插件后,我们可以结合Docker技术来进行自动化部署Docker是一种轻量级的容器化技术,它可以将应用程序和其依赖的环境打包成一个可移植的容器,方便在不同的环境中部署和运行。 而Kubernetes(简称K8s)是一个开源的容器编排平台,它可以管理和调度Docker容器集群。通过在K8s中创建Pod、Service等资源对象,我们可以实现Spring Cloud项目的自动化部署。 首先,我们可以使用Jenkins的Pipeline功能来编写自动化部署的流水线脚本。流水线脚本可以定义一系列的步骤,包括构建、测试和部署等。在流水线脚本中,我们可以使用Docker插件来创建Docker镜像,并将其推送到Docker仓库。接着,我们可以使用K8s插件来在Kubernetes集群中创建相关的资源对象,如Deployment和Service等。 在自动化部署过程中,我们可以将Spring Cloud项目的源代码与Dockerfile放在一个Git仓库中,并通过Jenkins的Webhook功能来触发自动化部署流水线。当有新的代码提交时,Jenkins会自动拉取最新的代码,并执行流水线脚本。在流水线脚本中,我们可以使用Maven或Gradle等工具来构建和打包Spring Cloud项目。然后,通过Docker插件创建可运行的Docker镜像,并将其推送到Docker仓库。 最后,使用K8s插件在Kubernetes集群中创建相关的资源对象,如Deployment和Service等。通过创建Deployment对象,我们可以定义应用程序的副本数和容器的镜像。通过创建Service对象,我们可以定义应用程序可以访问的网络端口和负载均衡规则。 通过JenkinsDocker和Kubernetes的自动化部署,我们可以实现Spring Cloud项目的快速、可靠和可重复部署。这种自动化部署的方式可以提高开发效率和部署质量,同时也降低了运维成本和风险。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值