Hello world,every one!

接触过springcloud分布式系统好久了,今天来整理一下吧,笔者使用的是centos8阿里云服务器。
让我们开始吧

工具安装
安装上传下载工具
yum install lrzsz
git工具
yum -y install git
解压工具
yum install -y unzip zip
nginx安装
yum install nginx

docker安装
参考 https://www.runoob.com/docker/centos-docker-install.html

yum install -y yum-utils  device-mapper-persistent-data    lvm2
yum-config-manager   --add-repo  https://download.docker.com/linux/centos/docker-ce.repoyum install docker-ce docker-ce-cli containerd.io

这里提示containerd.io版本太低,先升级:

wget https://download.docker.com/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
yum install -y  containerd.io-1.2.6-3.3.el7.x86_64.rpm

再安装:

yum install docker-ce docker-ce-cli containerd.io

启动docker:

systemctl start docker

https://www.cnblogs.com/niloay/p/6261784.html

https://www.cnblogs.com/freedom-only/p/11294103.html

添加admin到docker组https://blog.csdn.net/ljx1528/article/details/86424864
使用admin账户管理应用:

useradd admin

创建用户testuser

passwd admin

给已创建的用户testuser设置密码

gpasswd -a admin docker

将admin添加到docker组,docker安装时已经自动建好了

newgrp docker

刷新docker组

systemctl restart docker

创建docker ip组:可以根据自己的局域网段来

docker network create --subnet=192.168.2.0/16 shadownet

切换admin账户
拉取centos镜像:

docker pull centos
cd /home/admin
mkdir docker
cd docker
vi Dockerfile

将以下内容复制进去,第二行是时区同步,第三行设置系统语言,不同的基础镜像支持不同的语言包,可以进入容器执行locale -a查看容器所有语言包,后面的是配置java环境,jdk在后面会挂载到容器

FROM centos
RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone
ENV LANG C.utf8
ENV JAVA_HOME /usr/local/java8
ENV PATH ${PATH}:${JAVA_HOME}/bin
CMD java -version

保存后创建镜像: 后面的.表示当前目录
docker build -t my-image:v1 .

准备挂载目录,可以将常用的部署脚本和部署jar放进去,这里使用-v /home/admin/app/common_script:/app/common_script -v /home/admin/app/gateway:/app,前面是宿主目录,后面是docker目录

创建容器:
以gateway和user两个应用为例:制定ip和端口映射,挂载,没有静态ip需求的可以把–net shadownet --ip 192.168.2.2 换成 --net=host , 注意host 模式只支持 Linux 宿主机。静态ip在阿里云服务器上测试没问题,在本地测试服务器上测试连不上宿主机,奇了怪了,,

docker run -itd -p 7000:7000 -m2048M --net shadownet --ip 172.16.0.3 --name user -v /home/admin/app/common_script:/app/common_script   -v /usr/local/java8:/usr/local/java8    -v /home/admin/app/user:/app my-image:v1 /bin/bash &&
docker run -itd -p 5201:5201 -m2048M --net shadownet --ip 172.16.0.4 --name store -v /home/admin/app/common_script:/app/common_script  -v /usr/local/java8:/usr/local/java8     -v /home/admin/app/store:/app my-image:v1 /bin/bash

这时候容器已经跑起来了,查看命令:

docker ps -a
docker stats

进入容器:

docker exec -it user /bin/bash
docker exec -it store /bin/bash

让容器执行脚本:

docker exec -it user /bin/sh /app/common_script/start_app.sh

初始化脚本:/app/common_script/init.sh

mkdir -p /app/jar
mkdir -p /app/log/start-sh
touch /app/log/start-sh/jar-start.log
chmod 777 /app/*

执行初始化脚本: &&是让命令顺序执行

docker exec -it user      /bin/sh /app/common_script/init.sh &&
docker exec -it store /bin/sh /app/common_script/init.sh

创建git本地代码库
先生成git证书免密登陆:

cd  /home/admin/.ssh
ssh-keygen -t rsa -C git用户名

一直回车然后拷贝id_rsa.pub到git仓库里面添加SSH公钥

mkdir -p /home/admin/source
cd  /home/admin/source
git clone git@代码库位置

这时已经基本完成,就差脚本了:

maven项目打包:

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><!--配置为执行--><classifier>exec</classifier></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><!-- 指定该Main Class为全局的唯一入口 --><mainClass>com.taobao.GateWayCenterApp</mainClass><!-- 指定打包输出位置 便于脚本将可执行jar放到容器挂载目录以便执行--><outputDirectory>../../packages</outputDirectory><layout>JAR</layout></configuration><executions><execution><goals><goal>repackage</goal><!--可以把依赖的包都打包到生成的Jar包中--></goals></execution></executions></plugin></plugins></build>

打包脚本
mvn_package.sh:

#先更新项目
cd /home/admin/source/项目名称
echo "---------------start update--------------"
git reset --hard && git pull && cd ~
echo "---------------update end--------------"
#mvn打包
rm -rf
cd /home/admin/source/项目名称
#统一将打包后的jar放在packages中
rm -rf packages
mvn clean package#更新jar
cd packages
echo "---------------backup start--------------"#备份
directory=app_`date +%Y-%M-%d_%H_%M_%S`
mkdir /home/admin/bak/${directory}
cp * /home/admin/bak/${directory}/echo "---------------backup end--------------"

单项目启动脚本

set -m;
#更新jar,这里将打包好的jar放到挂载目录并让容器执行启动脚本

cd /home/admin/source/项目名/packages
cp user-1.0.0-exec.jar /home/admin/app/user/jar/app.jar
docker exec -i user /bin/sh /app/common_script/start_app.sh

通用脚本start_app.sh

##判断jar是否启动
pid=`ps aux | grep jar | grep app | awk '{print $2}'`
if [ ! -z "$pid" ];thenps aux | grep jar | grep app | awk '{print $2}' | xargs kill -9echo "========================已杀死进当前app进程======================="elseecho "========================jar进程不存在或已结束========================"echo "========================继续启动jar========================"fi
nohup  java -jar /app/jar/app.jar --spring.profiles.active=test >/app/log/log.log &echo "========================app启动成功========================" \#记录jar启动date "+%Y-%m-%d %H:%M:%S"  >> /app/log/start-sh/jar-start.logtailf="tailf"if [  ! -n "$1" ] ;thenecho "you have not input a tailf word!"elif [ "$1" = "$tailf" ];thentail -f /app/log/log.logfi

Jenkins部署
推荐 启动脚本及git关联部署:
https://blog.csdn.net/qq_35868811/article/details/90295913?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-8

这里使用yum安装jenkins一直获取不到对应的GPG证书,放弃了,直接下载war包搞起吧
忘记了怎么下了,汗~
然后运行jenkins:8080端口

java -jar jenkins.war &

复制提示的初始化密码去打开浏览器,127.0.0.1:8080
登录后初始化需要好一会儿
参考https://www.cnblogs.com/linjiqin/p/10969175.html

配置ssh服务器登录,远程执行命令

执行更新打包命令(图里面的Exec command):

source /etc/profile
source ~/.bashrc
sh /home/admin/mvn_package.sh

更新运行gateway项目,可以配置到jenkins Exec command:

source /etc/profile
source ~/.bashrc
cd /home/admin/source/项目名/packages
cp gateway-1.0.0-exec.jar /home/admin/app/user/jar/app.jar
docker exec -i gateway /bin/sh /app/common_script/start_app.sh tailf

其他springcloud项目可参考user来弄

其他
nacos启动:
/usr/local/nacos/bin/startup.sh -m standalone
端口:8848

redis
端口:6379
redis启动:
/usr/local/redis/src/redis-server /usr/local/redis/src/redis.conf
redis配置:
vi /usr/local/redis/redis.conf
#bind 127.0.0.1
requirepass 密码
protected-mode no

nginx启动:
端口:80
nginx -c /etc/nginx/nginx.conf
nginx重启:nginx -s reload
配置文件 /etc/nginx/nginx.conf

jenkins启动:
nohup java -jar /root/jenkins.war &

springcloud服务器搭建-自动化部署docker+jenkins相关推荐

  1. Jenkins 之 单节点 对接GitHub搭建自动化部署项目环境 与 实战测试 (三)

    Jenkins 之 单节点 对接GitHub搭建自动化部署项目环境 与 实战测试 (三) 目录 Jenkins 之 单节点 搭建自动化部署项目环境 与 实战测试 (三) Jenkins 服务器 环境 ...

  2. K8S搭建自动化部署环境(四)Jenkins多分支流水线Blue Ocean的安装和使用

    各位大佬,前文如下: K8S搭建自动化部署环境(一)安装Kubernetes K8S搭建自动化部署环境(二)安装K8S管理工具Kuboard V3 K8S搭建自动化部署环境(三)Jenkins下载.安 ...

  3. K8S搭建自动化部署环境(三)Jenkins下载、安装和启动

    各位大佬,前文如下: K8S搭建自动化部署环境(一)安装Kubernetes K8S搭建自动化部署环境(二)安装K8S管理工具Kuboard V3 一.jenkins 下载 jenkins下载地址:h ...

  4. git maven 一键部署_Jenkins Git Maven搭建自动化部署项目环境 邮件通知

    简介 折腾了两个晚上,趁着今晚比较有空,把jenkins+git+maven搭建自动化部署项目环境搭建的过程记录一下,这里我把github作为git的远程仓库(https://github.com/j ...

  5. 阿里云服务器搭建环境部署项目

    阿里云服务器搭建环境部署项目 最近要双十一搞活动就入手了一台阿里云服务器,从零开始搭建一次环境,顺便把这次过程记录下来. 1. 在这里找到自己买的服务器这里有相关想设置和信息可以查看 2. 接下来配置 ...

  6. 基于Gitlab Jenkins Docker集群 微服务搭建自动化部署平台

    随着公司应用系统的不断增多,原有手工部署流程越来越不满足上线的需求.为了各个系统能快速迭代与测试,减少上线流程时间和人为出错,迫切需要一套自动化部署系统. 转载原文:https://luoji.liv ...

  7. git自动部署代码到服务器windows,Jenkins-在windows上配置自动化部署(Jenkins+Gitlab+IIS)...

    Jenkins-在windows上配置自动化部署(Jenkins+Gitlab+IIS) web部署样例 windows服务部署样例 系统备份 在服务器上创建后缀名为.ps1的文件,例:BackUpD ...

  8. 脚本自动化部署docker微服务,取代Jenkins

    由于Jenkins容器化部署,容器容器之间拷贝文件及其繁琐,如果在Jenkins部署在系统外层也需要配置复杂的流程才能实现微服务的自动化部署,本文主要通过脚本方式取代Jenkins实现自动化部署.脚本 ...

  9. 构建iOS持续集成平台(三)——CI服务器与自动化部署

    http://www.infoq.com/cn/articles/build-ios-continuous-integration-platform-part3 CI服务器 写到这儿,对于iOS开发者 ...

最新文章

  1. java 头尾 队列_记一次腾讯面试,我挂在了最熟悉不过的队列上
  2. java将本地图片转为bas64_JAVA将图片(本地或者网络资源)转为Base64字符串
  3. linux kernel中的cmdline的详细介绍
  4. HDU4405(概率DP求期望)
  5. httpHandlers
  6. ActiveMQ持久订阅设置
  7. 二分查找(Java实现)
  8. 使用手机摄像头做网络ip摄像头用opencv中打开
  9. 3. Vue入门实战教程之vue-element-admin初体验
  10. 电源 PFC(功率因数校正)电路拓扑,共计100多份,内含A PFC,连续断续,交错,维也纳,各功率段的PFC电路,还有电感 设计选型
  11. python怎么打e,python e怎么表示
  12. Electron:前端人的最佳跨平台解决方案
  13. 使用 html 写一个表达爱意的网页
  14. 联想G40笔记本U盘重装win7系统问题笔记
  15. 【opencv】2.图像读取、显示、输出
  16. 【PyTorch深度学习项目实战100例】—— 基于CNN实现书法字体风格识别任务 | 第62例
  17. 第10课:主流的分布式消息队列方案解读及比较
  18. 数据类型 varbinary 和 varchar 在 add 运算符中不兼容。
  19. 《SPSS统计分析与行业应用实战》之ROC曲线案例
  20. 易语言 标准c 动态库,易语言Dll动态库的开发

热门文章

  1. linux查看vmware的版本,linux中查看系统版本信息的方法
  2. Java音视频播放器
  3. Canvas画布实现套索的效果
  4. Matlab plot 画图问题汇总
  5. 韶音OpenRun Pro怎么样,南卡Runner Pro3和韶音OpenRun Pro哪个更好
  6. fwr171改无线服务器,迅捷FWR171无线路由器的无线AP模式怎么设置
  7. Linux 登录 帐号 cmccedu 无线,连接cmccedu不弹出登陆网页解决方法
  8. Echarts --- 可视化练习(pie04 --- 饼图标签的对齐方式)
  9. java Spring5 Nullable注解使用
  10. 一个有趣的网站,开发同事要看的577个网站,小牛导航(super-nb)一站给聚合了