使用Jenkins+docker打包部署后端服务的实现

老板给了两台服务器,一台windows用来打包,一台linux用于构建镜像 + 部署,于是有了这篇笔记

安装Jenkins

下载地址:https://www.jenkins.io/download/

找到对应版本下载安装就行,装好之后在浏览器输入localhost:port(port是你安装时设置的端口),看到如下页面:

%使用Jenkins+docker打包部署后端服务的实现-猿站网-插图

就说明装好了,然后用安装的时候设置好的账号密码登录

配置

1、配置工具

%使用Jenkins+docker打包部署后端服务的实现-1猿站网-插图

%使用Jenkins+docker打包部署后端服务的实现-2猿站网-插图

进入页面后首先是添加maven的配置文件:

maven配置文件

%使用Jenkins+docker打包部署后端服务的实现-3猿站网-插图

然后配置工具:

jdk

%使用Jenkins+docker打包部署后端服务的实现-4猿站网-插图

git

%使用Jenkins+docker打包部署后端服务的实现-5猿站网-插图

maven

%使用Jenkins+docker打包部署后端服务的实现-6猿站网-插图

配置好之后应用保存

2、配置Publish over SSH

这一步是为了把文件推送到远程服务器,不需要的可以跳过

首先去插件商店安装publish over ssh

%使用Jenkins+docker打包部署后端服务的实现-7猿站网-插图

进入之后搜索publish over ssh,然后安装

安装完成后进入系统配置,拉到最下面,就可以看到publish over ssh的配置了

%使用Jenkins+docker打包部署后端服务的实现-8猿站网-插图

%使用Jenkins+docker打包部署后端服务的实现-9猿站网-插图

%使用Jenkins+docker打包部署后端服务的实现-10猿站网-插图

配置完之后同样应用保存

创建流水线打包

%使用Jenkins+docker打包部署后端服务的实现-11猿站网-插图

%使用Jenkins+docker打包部署后端服务的实现-12猿站网-插图

配置自动触发的条件,不勾就是手动触发咯

%使用Jenkins+docker打包部署后端服务的实现-13猿站网-插图

然后就是最重要的流水线语法了

%使用Jenkins+docker打包部署后端服务的实现-14猿站网-插图

可以点击这里帮助生成

%使用Jenkins+docker打包部署后端服务的实现-15猿站网-插图

%使用Jenkins+docker打包部署后端服务的实现-16猿站网-插图

下拉框那里,如果是linux命令选择sh:xxx

window命令选择bat:xxx

git命令选择git:xxx

publishSSH选择SSH Publishers:XXX

以下是我流水线示例:

?
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
pipeline {
agent any
stages {
stage(拉取代码) {
steps {
checkout([$class: GitSCM, branches: [[name: */master]], extensions: [], userRemoteConfigs: [[credentialsId: xxx, url: http://XXX.git]]])
echo 拉取代码成功
}
}
stage(编译构建) {
steps {
//输出当前jenkins的工作目录
echo “${env.WORKSPACE}”
//仅打包file-service模块
bat mvn clean package -pl file-service -am
echo 编译成功
}
}
stage(推送jar包) {
steps {
sshPublisher(publishers:
[sshPublisherDesc(
configName: ssh253,
transfers: [sshTransfer(
cleanRemote: false,
excludes: ,
execCommand: cd local/file
./start.sh,
execTimeout: 120000,
flatten: false,
makeEmptyDirs: false,
noDefaultExcludes: false,
patternSeparator: [, ]+,
remoteDirectory: file,
remoteDirectorySDF: false,
removePrefix: file-service\\target\\,
sourceFiles: file-service\\target\\file-service-1.0-SNAPSHOT.jar
)],
usePromotionTimestamp: false,
useWorkspaceInPromotion: false,
verbose: false
)])
}
}
}
}

1、stage表示流水线每一步的名字,执行之后是这个样子:

%使用Jenkins+docker打包部署后端服务的实现-17猿站网-插图

2、拉取代码

credentialsId:你配置的凭证id

配置凭证

%使用Jenkins+docker打包部署后端服务的实现-18猿站网-插图

%使用Jenkins+docker打包部署后端服务的实现-19猿站网-插图

%使用Jenkins+docker打包部署后端服务的实现-20猿站网-插图

%使用Jenkins+docker打包部署后端服务的实现-21猿站网-插图

%使用Jenkins+docker打包部署后端服务的实现-22猿站网-插图

查看凭证

%使用Jenkins+docker打包部署后端服务的实现-23猿站网-插图

url:你的git项目地址

3、编译构建

使用maven进行打包的命令而已

4、推送jar包

我是用流水线语法生成器生成的

%使用Jenkins+docker打包部署后端服务的实现-24猿站网-插图

Source files:

要发送的源文件位置,表示当前工作空间下的file-service\target\file-service-1.0-SNAPSHOT.jar包,\是windows上的路径写法,如果要发送整个文件,则使用/* *

Remove prefix:

去除的前缀,表示只要文件不要目录,如果不去除,那么文件复制到服务器上后会生成file-service\target\目录

Remote directory:

远程机的路径,这个路径是以系统配置publish over ssh的Remote directory为当前文件夹的相对路径,开头不写/

Exec command文件推送完之后的命令

以上,流水线就做好了,点击“build Now”就可以打包并且推送到服务器对应位置上了

构建镜像

现在jar包已经有了,并且到了它该在的位置,需要来构建镜像并启动

安装docker

使用命令:curl -fsSL https://get.docker.com | bash -s docker –mirror Aliyun

或者:curl -sSL https://get.daocloud.io/docker | sh

编写dockerfile docker需要使用dockerfile来构建镜像,先新建一个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
#jdk基础镜像
FROM anapsix/alpine-java:8_server-jre_unlimited
#作者
MAINTAINER CarinaYang
#执行命令,主要用来安装相关的软件
#RUN
#添加文件
ADD admin-service-1.0-SNAPSHOT.jar /usr/local
#使用外面的配置文件
ADD admin-service.yml /usr/local
#挂载目录到容器
#VOLUME [“/data”]
#开放端口
EXPOSE 9000
#启动时执行的命令
CMD [“/bin/bash”]
ENV JAVA_OPTS=”\
-Xms2048m -Xmx2048m -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M”
#启动时执行的命令
ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar -Dspring.config.location=/usr/local/admin-service.yml /usr/local/admin-service-1.0-SNAPSHOT.jar

构建镜像 这里我是直接使用脚本来写的,创建脚本start.sh

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
# 定义应用组名
group_name=springcloud
# 定义应用名称
app_name=admin-service
# 定义应用版本
app_version=1.0-SNAPSHOT
echo —-停止消息服务 —-
docker stop ${app_name}
echo —-删除实例—-
docker rm ${app_name}
echo —-删除旧镜像—-
docker rmi ${group_name}/${app_name}:${app_version}
echo —-打包镜像—-
# 打包编译docker镜像
docker build -t ${group_name}/${app_name}:${app_version} .
echo —-启动镜像—-
docker run -itd -p 9000:9000 –restart=always  –name ${app_name}  ${group_name}/${app_name}:${app_version}
echo —-启动完成—-

docker run 里面的 –restart=always是为了开机自启动设置的,因为服务器每天晚上要关机,不需要可以不写

因为没有部署镜像仓库就直接启动镜像了,如果有的话要推到镜像仓库上去

启动脚本

?
1
./start.sh

当然,可以直接加到jenkins流水线“推送jar包”步骤的execCommand中,这样Jenkins推送jar包过来后就会自动启动脚本了

到此这篇关于使用Jenkins+docker打包部署后端服务的实现的文章就介绍到这了,更多相关Jenkins docker打包部署内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/CarinaYang/article/details/126062761

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:exb是什么文件格式?exb文件怎么打开?exb文件用什么打开?

2023-3-3 18:23:17

建站知识

hostkvm怎么样(HostKVM测评)

2023-3-3 18:27:09

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索