陈奇网络工作室

JenkinsDocker的自动化CI/CD实践

云计算

左边是我的个人微消息。如需进一步交流,请加好友。右边是我的微信官方账号“Openstack私有云”。有兴趣的请关注。

我很早就想实践所谓的CI/CD持续集成开发,主要是工作中没有用到,对开发领域也不是特别熟悉。现在基础设施自动化只是为上层应用服务,开发部门也是大爷,需要我好好服务,哈哈。

简要介绍CI/CD的概念,字面意思是持续集成/持续部署或交付,如下:

持续集成(CI):在持续集成环境中,开发人员会频繁提交代码测试(一天多次),他们必须在构建之前通过单元测试。如果一个测试用例失败了,集成就无法继续,以便快速发现问题并修复它们。然后构建、部署、测试代码,再反馈测试结果,这个过程不断执行。

持续部署(CD):持续部署可以灵活地将项目部署到任何环境,如测试环境、预生产环境、生产环境,以便质量团队或用户使用,发现问题,反馈意见。

连续交付(CD):将最终产品发布到生产环境供用户使用。

下图是通过git docker register Jenkins docker实现CI/CD的简单示意图(来自互联网)。

可以看到逻辑关系还是很简单的,就是开发者上传开发代码到git,触发Jenkins的自动代码编译并构建镜像,将镜像推送到docker仓库,比如Harbor,测试环境或者生产环境,然后从docker仓库拉映像部署。

废话不多说,开始规划吧。

发布过程如下:

1.开发语言:Java

2.项目代码版本管理:Git

3.代码编译:Maven

4.持续集成:Jenkins

5.发货:以Docker镜像的形式发货,提交到镜像仓库。

6.部署:Docker主机创建容器

环境规划如下:

詹金斯

192.168.1.45

git/注册表

操作系统:CentOS7.2

镜像名称格式:

项目名称-模块名称:代码版本(标签)

工作流程:

1.开发者将代码提交到Git版本仓库;

2.Jenkins手动/定期触发项目建设;

3.詹金斯拉代码,编译代码,打包镜像,推送到镜像仓库;

4.Jenkins在Docker主机上创建一个容器并发布它。

部署Git仓库

在192.168.1.44主机上安装Git,如下所示:

安装Git

#yuminstallgit-y

2.创建一个Git用户并设置密码。

#useraddgit

#echogit|passwd - stdingit

创建仓库

苏-吉特

mkdirsolo.git

cdsolo.git

git - bareinit

4.访问创建的仓库。

# gitclonegit @ 192 . 168 . 1 . 44:/home/git/solo . git

将项目上传到Git仓库

我从Github找到了一个开源的JAVA博客项目作为演示。

拉代码

# git clone https://github . com/B3 log/solo . git

添加私人仓库地址

#cdsolo/

#gitremoteremoveorigin

# gittremoteaddorigingit @ 192 . 168 . 1 . 44:/home/git/solo . git

提交给私人仓库

#gitadd。

#gitcommit-m'all '

# gitpushoriginmaster

在192.168.1.45安装Docker并配置Java环境,如下所示:

1.安装依赖包

# Yu install-yyum-utils device-mapper-persistent-data LVM 2

2.添加Docker包源:

#yum-config-manager\\\\

-添加-repo\\\\

https://download.docker.com/linux/centos/docker-ce.repo

安装DockerCE

#yuminstalldocker-ce-y

配置加速器

# curl-SSL https://get . Dao cloud . io/Dao tools/set _ mirror . sh | sh-s http://BC 437 CCE . m . Dao cloud . io

5.启动和引导

# systemctlstartdocker

#systemctlenabledocker

6.安装Java和Maven环境。

首先,在oracle官网下载jdk安装包jdk-8u192-linux-x64.tar.gz。

# tarzxfjdk-8u 192-Linux-x64 . tar . gz

# mvjdk 1 . 8 . 0 _ 192/usr/local/JDK 1.8

# wget https://archive . Apache . org/dist/maven/maven-3/3 . 5 . 4/binaries/Apache-maven-3 . 5 . 4-bin . tar . gz

# tarzxfapache-maven-3 . 5 . 4-bin . tar . gz

# mvapache-maven-3 . 5 . 4/usr/local/maven 3.5

#vi/etc/profile

MAVEN_HOME=/usr/local/maven3.5

JAVA_HOME=/usr/local/jdk1.8

PATH=$ PATH:$ JAVA _ HOME/bin:$ MAVEN _ HOME/bin

类路径=。$ JAVA _ HOME/lib/dt . jar:$ JAVA _ HOME/lib/tools . jar

exportJAVA_HOMEPATHCLASSPATH

#source/etc/profile

7.安装饭桶,需要在詹金斯运行管道的时候需要用到git:

yuminstallgit-y

安装詹金斯

詹金斯是一个开源软件项目,是基于Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)开发的一种持续集成工具,用于代码编译、部署、测试等工作。

詹金斯也是一个跨平台的,大多数主流的平台都支持,而且安装很简单,我们这里以部署战争包方式安装它。

下载地址:詹金斯https://号。io/下载

在192.168.1.46主机安装詹金斯,下载雄猫二进制包将战争包到webapps下即可:

先安装Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)环境,

# tarzxfjdk-8u 192-Linux-x64。焦油。地面零点

# mvjdk 1。8 .0 _ 192/美国/当地/JDK 1.8

#vi/etc/profile

JAVA_HOME=/usr/local/jdk1.8

PATH=$PATH:$JAVA_HOME/bin

类路径=。$ JAVA _ HOME/lib/dt。jar:$ JAVA _ HOME/lib/tools。冲突

exportJAVA_HOMEPATHCLASSPATH

#source/etc/profile

# wget http://镜子。詹金斯。io/战稳/最新/詹金斯。战争

# wget http://镜子。舒。edu。cn/Apache/Tomcat/Tomcat-8/v 8。5 .37/bin/阿帕奇-雄猫-8。5 .37 .焦油。地面零点

# tarzxfapache-Tomcat-8。5 .37 .焦油。地面零点

# mvapache-Tomcat-8。5 .37/美国海军/地方/雄猫-詹金斯

# RM/usr/local/Tomcat-Jenkins/web apps/*-RF

#拉开詹金斯的拉链。war-d/usr/local/Tomcat-Jenkins/web apps/ROOT

# CD/usr/local/Tomcat-Jenkins/bin/

#./startup.sh

#tail-f./logs/catalina.out

.

jenkinsinitialsetupisrequired。anadminuserhasbeencreatedapasswordegenerated .

请使用以下passwordtoproceedtoinstallation:

a 832 e 00 BC 8c 3484698 f 74862 a 3a 2459 a

这也可能位于:/root/.詹金斯/秘密/初始密码

.

部署成功,访问詹金斯:http://192.168.1.46:8080

注意在防火墙上将8080端口打开:

防火墙-cmd附加端口=8080/tcp

防火墙-cmd附加端口=8080/TCP永久

输入上面日志输出的密码:a 832 e 00 BC 8 c 3484698 f 74862 a 3a 2459 a,或者从本机/root/.詹金斯/秘密/初始密码文件获取,点击继续,选择安装推荐的插件。

等待一会儿安装插件完成。之后创建第一个管理用户:

账号密码管理。接下来对詹金斯进行配置:

名称:从节点名字

并发构建数:同一时间下发该奴隶最大任务数

远程工作目录:从上的工作目录

标签:标记,用于识别哪一个奴隶

用法:只负责职位标记到该奴隶的任务

启动方式:Linux从机一般采用嘘连接

主机:从属互联网协议(Internet Protocol)地址,这里是码头工人主机互联网协议(互联网协议)

凭据:选择刚创建的凭据,宋承宪连接到该主机的用户名和密码

Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)路径:从上Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)绝对路径

添加新节点之后,需要连接这个码头工人节点,首次连接的时候回报错ssh _主机没有保存这个地址的公钥,需要在后台直接使用嘘登录一下192.168.1.45 ,如下:

【root @ Jenkins secrets】# ssh 192。168 .1 .45

主机192.168.1.45(192.168.1.45)的真实性不能成立。

ecdsakeyfingerprintis 64:B6:7a:B9:9d:65:E2:57:3f:61:D8:DC:6c:cc:6a:78 .

您是否希望继续连接(是/否)?是

警告:已将"192 .168 .1 .45英寸(ECD sa)永久添加到已知主机列表中。

root @ 192。168 .1 .45英寸密码:

最后登录:星期六217:34:392019从192.168.1.22

[root@docker~]#

之后就能正确登录新节点,如下:

授权码头工人主机免交互拉取饭桶仓库

在码头工人主机192.168.1.45 创建密钥对:

#ssh-keygen#一路回车

#ssh-copy-idgit@192.168.1.44

测试免交互登录:

#sshgit@192.168.1.44

新建任务

管道是一套运行于詹金斯上的工作流框架,将原来独立运行的单个或多个任务连续起来,发布流程使用绝妙的脚本书写整个生命周期,并且支持从代码库直接读取该脚本,这种理念是目前CI/CD的最佳实践。

詹金斯文件内容如下:

节点(' 192.168.1.45'){//指定奴隶标签

//拉取代码

stage('GitCheckout'){

checkout([$class:'GitSCM '分支:[[name:$ Tag ']],dogeneratesubmoduleconfiguration s:false,extensions:[],submulecfg:[],userRemoteConfigs:[[URL:' git @ 192。168 .1 .44:/home/git/solo。git ']])

}//$标签引用用户交互输入的标签

//代码编译

stage('MavenBuild'){

"嘘"

导出Java _ HOME=/usr/local/JDK 1.8

/usr/local/maven 3.5/bin/mvncleanpackage-dmaven。测试。跳过=真

'''

}

//项目打包到镜像并推送到镜像仓库

stage('BuildandPushImage'){

"嘘"

储存库=192。168 .1 .44/库/solo:$ { Tag }

catDockerfileEOF

从192年开始。168 .1 .44/库/Tomcat:最新

RUNrm-RF/usr/local/Tomcat/web apps/ROOT

COPYtarget/* .war/usr/local/Tomcat/web apps/root。战争

CMD['catalina.sh '' run']

文件结束

码头建造费仓库。

docker登录-uywb-pyourpassword 192。168 .1 .44

dockerpush$REPOSITORY

'''

//根据$标签作为镜像版本号

}

//部署到码头工人主机

stage('DeploytoDocker'){

"嘘"

储存库=192。168 .1 .44/库/solo:$ { Tag }

dockerrm-fblog-solo|true

dockerimagerm$REPOSITORY|true

docker登录-uywb-pyourpassword 192。168 .1 .44

docker container run-d-name blog-solo-v/usr/local/JDK 1.8:/usr/local/JDK-p88:8080 $ REPOSITORY

'''

}

}

在192.168.1.44 上模拟提交代码创建标签:

[git@harborsolo]$cdsolo

【git @ harbor solo】$ touch src/main/web app/123。文本文件(textfile)

[git@harborsolo]$gitadd .

[git@harborsolo]$gitcommit-m'1 '

[masterfca1bcb]1

一文件已更改,0插入( ),0删除(-)

创建模式100644 src/main/web app/123。文本文件(textfile)

[git@harborsolo]$gittag1.0.0

【git @ harbor solo】$ git push origin 1。0 .0

git @ 192。168 .1 .44英寸密码:

计数对象:10,完成。

deltacompressionusingupto2threads .

压缩对象:100%(5/5),完成。

写入对象:100%(6/6),438字节| 0字节/秒,完成。

总计6(增量3),重复使用1(增量0)

togit @ 192。168 .1 .44:/home/git/solo。饭桶

*[新标签]1.0.0-1.0.0

[git@harborsolo]$

发布测试!!

自动化构建部署是成功了,在构建过程中可以直接看创造历史中的安慰输出,如下:

具体内容如下,以供参考:

Startedbyuseradministrator

运行耐久性级别:MAX _ SURVIVABILITY

[管道]管道起点

[管道]节点

running dockerin/var/Jenkins _ home/workspace/blog-solo

[管道]{

[管道]阶段

[管道]{(GitCheckout)

[管道]结帐

未指定认证

fetchingchangesfromtremotegitrepository

检查C4 B3 Fe 99625 c 68 AE 11d 1166d 06 af 556(1。0 .0)

提交消息:"1"

首次构建。跳过changelog .

[管道]}

[管道]//阶段

[管道]阶段

[管道]{(MavenBuild)

[管道]嘘

git rev-parse-is-inside-work-tree #超时=10

git配置远程。起源。urlgit @ 192。168 .1 .44:/home/git/solo。git #超时=10

fetchingupstreamchangesfromgit @ 192。168 .1 .44:/home/git/solo。饭桶

饭桶-版本号超时=10

git获取-标签-进展git @ 192。168 .1 .44:/home/git/solo。git refs/heads/*:refs/remotes/origin/* # time out=10

gitrev-parseorigin/1.0.0^{commit}#timeout=10

gitrev-parse1.0.0^{commit}#timeout=10

gitconfigcore。sparsesecheckout #超时=10

git签出-ffca 1 bcbd 6 C4 B3 Fe 99625 c 68 AE 11d 1166d 06 af 556 #超时=10

导出Java _ HOME=/usr/local/JDK 1.8

JAVA_HOME=/usr/local/jdk1.8

/usr/local/maven 3.5/bin/mvncleanpackage-dmaven。测试。跳过=真

[信息]扫描项目.

[警告]

[警告]在buildingtheeffectivemodelfororg。B3日志:独奏:战争:2。9 .9时遇到了一些问题

[警告]'依赖项。依赖性。组织的“系统路径”。项目目录{ project }内的patch ca:patch ca:jarshouldnotpointatfiles。basedir }/src/main/resources/lib/net/索普/修补ca-0。5 .0 .jarwillbenunresolvablebydependentprojects @第245行第25列

[警告]

[警告]高度推荐解决这些问题,因为它们威胁到您的构建的稳定性。

[警告]

[警告]因此,futureMavenversionsmightnolongersupportbuildingsuchmalformedprojects .

[警告]

[信息]

[信息] - org.b3log:solo -

[信息]建筑物2.9.9

[信息]-[战争]

[信息]

[信息] - maven-clean-plugin:2.5:clean(默认-干净)@solo -

[信息]删除/var/Jenkins _ home/workspace/blog-solo/target

[信息]

【信息】-jacoco-maven-plugin:0。8 .2:准备-代理(预备代理)@solo -

[信息]argLinesetto-Java代理:/root/。m2/repository/org/jaco co/orgjaco公司代理/0。8 .2/组织。jaco公司代理-0。8 .2-运行时间。jar=dest file=/var/Jenkins _ home/workspace/blog-solo/target/jaco co . exec

[信息]

[信息] -许可证-maven-插件:3.0:格式(默认)@solo -

[信息]更新许可证页眉.

[警告]未知文件扩展名:/var/Jenkins _ home/workspace/blog-solo/src/main/resources/docker/local。属性。H3

[警告]未知的文件扩展名:/var/Jenkins _ home/workspace/blog-solo/src/main/resources/docker/local。属性。关系型数据库

[信息]Updatinglicenseheaderin:/var/Jenkins _ home/workspace/blog-solo/src/main/web app/CSS/default-admin。量滴半铸钢钢性铸铁(Cast Semi-Steel)

[信息]Updatinglicenseheaderin:/var/Jenkins _ home/workspace/blog-solo/src/main/web app/CSS/default-base。量滴半铸钢钢性铸铁(Cast Semi-Steel)

[信息]Updatinglicenseheaderin:/var/Jenkins _ home/workspace/blog-solo/src/main/web app/CSS/default-init。量滴半铸钢钢性铸铁(Cast Semi-Steel)

[信息]Updatinglicenseheaderin:/var/Jenkins _ home/workspace/blog-solo/src/main/web app/js/admin/latke admin。量滴射流研究…

[信息]Updatinglicenseheaderin:/var/Jenkins _ home/workspace/blog-solo/src/main/web app/js/common。量滴射流研究…

[信息]Updatinglicenseheaderin:/var/Jenkins _ home/workspace/blog-solo/src/main/web app/js/page。量滴射流研究…

[警告]未知的文件扩展名:/var/Jenkins _ home/workspace/blog-solo/src/test/resources/skins/Jane/CSS/_ icon。scss

[警告]未知的文件扩展名:/var/Jenkins _ home/workspace/blog-solo/src/test/resources/skins/Jane/CSS/base。scss

[警告]未知的文件扩展名:/var/Jenkins _ home/workspace/blog-solo/src/test/resources/markdown _ syntax。文本

[警告]unabletofindacommentstyledefinitionforsomefiles。youmaywanttoaddcustommapping for herelevantfileextensions .

[信息]

[信息]-maven-resources-plugin:2.6:资源(默认-资源)@solo -

[信息]使用“utf-8”编码tocopyfilteredresources .

[信息]复制9资源

[信息]

[信息] - maven-min-plugin:1.0.4:min(默认)@solo -

[信息]已合并[

src/main/web app/js/admin/admin。js,

src/main/web app/js/admin/editor。js,

src/main/web app/js/admin/editor tinymce。js,

src/main/web app/js/admin/editorkindeditor。js,

src/main/web app/js/admin/editorcodemirror。js,

src/main/web app/js/admin/table分页。js,

src/main/web app/js/admin/article。js,

src/main/web app/js/admin/comment。js,

src/main/web app/js/admin/文章列表。js,

src/main/web app/js/admin/draft list。js,

src/main/web app/js/admin/页面列表。js,

src/main/web app/js/admin/其他。js,

src/main/web app/js/admin/linklist。js,

src/main/web app/js/admin/preference。js,

src/main/web app/js/admin/plugin列表。js,

src/main/web app/js/admin/userlist。射流研究…

src/main/web app/js/admin/类别列表。js,

src/main/web app/js/admin/comment list。js,

src/main/web app/js/admin/plugin。js,

src/main/web app/js/admin/main。js,

src/main/web app/js/admin/about。射流研究…

],[21]文件

[信息]最小化[src path=src/main/web app/js/admin/latke admin。js,目标路径=src/main/web app/js/admin/latke admin。量滴js]

[信息]最小化[src path=src/main/web app/CSS/default-admin。CSS,目标路径=src/main/web app/CSS/default-admin。量滴CSS]

[信息]最小化[src path=src/main/web app/CSS/default-base。CSS,目标路径=src/main/web app/CSS/default-base。量滴CSS]

[信息]最小化[src path=src/main/web app/CSS/default-init。CSS,目标路径=src/main/web app/CSS/default-init。量滴CSS]

[信息]最小化[src path=src/main/web app/js/common。js,目标路径=src/main/web app/js/common。量滴js]

[信息]最小化[src path=src/main/web app/js/page。js,目标路径=src/main/web app/js/page。量滴js]

[信息]

[信息]-maven-编译器-插件:3.1:编译(默认-编译)@solo -

[信息]检测到更改-重新编译模块!

[信息]编译141源文件to/var/Jenkins _ home/workspace/blog-solo/target/classes

[警告]/var/Jenkins _ home/workspace/blog-solo/src/main/Java/org/B3日志/solo/util/markdowns。Java:/var/Jenkins _ home/workspace/blog-solo/src/main/Java/org/B3日志/solo/util/markdowns。javausesoroverridesadecuatedapi

[警告]/var/Jenkins _ home/workspace/blog-solo/src/main/Java/org/B3日志/solo/util/markdowns。Java:用-Xlint:deprecationfordetails重新编译.

[警告]/var/Jenkins _ home/workspace/blog-solo/src/main/Java/org/B3日志/solo/处理器/类别处理器。Java:someinputfilesuseuncheckedorunsafeonings .

[警告]/var/Jenkins _ home/workspace/blog-solo/src/main/Java/org/B3日志/solo/处理器/类别处理器。Java:用-Xlint:uncheckedfordetails重新编译.

[信息]

[信息]-maven-resources-plugin:2.6:测试资源(默认-testResources)@solo -

[信息]Notcopyingtestresources

[信息]

[信息]-maven-compiler-plugin:3.1:测试编译(默认-testCompile)@solo -

[信息]不编译测试源

[信息]

[信息]-maven-surefire-plugin:2。22 .1:测试(默认-测试)@solo -

[信息]测试已终止。

[信息]

[信息] - maven-war-plugin:3.2.2:war(默认-战争)@solo -

[信息]打包webapp

[信息]在[/var/Jenkins _ home/workspace/blog-solo/target/solo]中组装web应用程序[solo]

[信息]处理战争项目

[信息]将web app web资源[/var/Jenkins _ home/workspace/blog-solo/src/main/resources/lib/net/索普]复制到[/var/Jenkins _ home/workspace/blog-solo/target/solo]

[信息]复制web应用资源[/var/Jenkins _ home/workspace/blog-solo/src/main/web app]

[信息[1661年组装的网络应用程序毫秒]

[信息]筑战:/var/Jenkins _ home/workspace/blog-solo/target/solo。战争

[信息]

[信息]构建成功

[信息]

[信息]总时间:22.847秒

[信息]完成时间:2019-02-12T14:57:51 08:00

[信息]

[管道]}

[管道]//阶段

[管道]阶段

[管道]{(BuildandPushImage)

[管道]嘘

存储库=192 .168 .1 .44/库/solo:1.0.0

码头建筑-t 192。168 .1 .44/库/solo:1.0.0 .

发送buildcontexttodockerdaemon 193.1 MB

步骤1/4:来自192 . 168 . 1 . 44/库/tomcat:最新

- 7ee26c09afb3

第2/4步:RUNrm-RF/usr/local/Tomcat/web apps/ROOT

-使用缓存

- 6fd3776d336d

第3/4步:COPYtarget/* .war/usr/local/Tomcat/web apps/root。战争

- 681b8e7f75a3

步骤4/4:CMD['catalina.sh '' run']

- Runningin022995c66416

移除中间媒体容器022995c66416

- 77f8ed952a88

成功构建77f8ed952a88

成功标记192 .168 .1 .44/库/solo:1.0.0

dockerlogin-uywb-pY4yhl9t,2000 ./192.168.1.44

警告!使用- passwordviatheCLIisinsecure .使用-密码-标准输入.

警告!yourpasswordwillbestoredunencryptin/root/.docker/config.json .

configurecredentialhelpertorovethisgwarning .看见

https://份文件。码头工人。com/engine/reference/命令行/login/#credentials-store

登录成功

docker push 192。168 .1 .44/库/solo:1.0.0

pushreferestorepository[192。168 .1 .44/图书馆/独奏]

e64f746232b6:准备

2 ff 6a 1c 612d:准备

32386b730743:准备

d27bd82364ad:准备

b17b783848f6:准备

c3041009a55f:准备

362dc50d53f9:正在准备

b20924a475a9:准备

c258ca0f6e4f:准备

0f640c03c372:正在准备

76dfa41f0a1d:准备

c240c542ed55:正在准备

badfbcebf7f8:准备

正在等待

362dc50d53f9:正在等待

b20924a475a9:等待

c258ca0f6e4f:等待

0f640c03c372:正在等待

等待中

c240c542ed55:正在等待

badfbcebf7f8:正在等待

32386b730743:已推送

2 ff 6a 1c 612d:推送

e64f746232b6:已推送

b17b783848f6:已推送

c3041009a55f:已推送

b20924a475a9:推动

c258ca0f6e4f:已推送

0f640c03c372:已推送

76dfa41f0a1d:已推送

d27bd82364ad:推送

c240c542ed55:已推送

badfbcebf7f8:已推送

362dc50d53f9:已推动

1.0.0:文摘:sha 256:F3 a 46 B4 b 409 aa 404 ee 621 dab 89152 fc 9d 8986 a9 cf 367324 c 96 cf deb 52 a0b 4669尺寸:3045

[管道]}

[管道]//阶段

[管道]阶段

[管道]{(部署Docker)

[管道]嘘

存储库=192 .168 .1 .44/库/solo:1.0.0

dockerrm-fblog-solo

真实的

错误:Nosuchcontainer:博客-个人

dockerimagerm 192。168 .1 .44/库/solo:1.0.0

真实的

dockerlogin-uywb-pY4yhl9t,2000 ./192.168.1.44

警告!使用- passwordviatheCLIisinsecure .使用-密码-标准输入.

警告!yourpasswordwillbestoredunencryptin/root/.docker/config.json .

configurecredentialhelpertorovethisgwarning .看见

https://份文件。码头工人。com/engine/reference/命令行/login/#credentials-store

登录成功

docker containerrun-d-name blog-solo-v/usr/local/JDK 1.8:/usr/local/JDK-p88:8080192。168 .1 .44/库/索罗:1。0 .0

无法在本地找到图片192。168 .1 .44/库/索罗:1。0 .0 '

1.0.0:Pullingfromlibrary/solo

ab1fc7e4bf91:已经存在

35fba333ff52:已经存在

f0cb1fa13079:已经存在

3d79c18d1bc0:已经存在

ff1d0ae4641b:已经存在

8883e662573f:已经存在

adab760d76bd:已经存在

86323b680e93:已经存在

14a2c1cdce1c:已经存在

ee59bf8c5470:已经存在

067f988306af:已经存在

9bb416c07ed0:已经存在

71085ba70bfc:拉动屠宰机

71085ba70bfc:验证检查总和

71085ba70bfc:下载完成

71085ba70bfc:拉动完成

文摘:sha 256:F3 a 46 B4 b 409 aa 404 ee 621 dab 89152 fc 9d 8986 a9 cf 367324 c 96 cf deb 52 a0b 4669

状态:downloadednewerimagefor 192。168 .1 .44/库/solo:1.0.0

9 ed 4 af 7 df 3 f 808 f 150 E0 d 5967890 a 0 acfb 98 EB 19958 B4 CEC 5499 bfc 1 E0 d 90 de 5

[管道]}

[管道]//阶段

[管道]}

[管道]//节点

[管道]内管道

完成:成功

最后到192.168.1.45的码头工人服务器中检查容器是否部署成功:

[root@dockersolo]#dockerps

containeriimagecommandcreatedstatusesportsnames

C4 278号c 192。168 .1 .44/图书馆/solo:v 2.0 '卡特琳娜。shrun ' 6分钟组5秒0.0.0.0:88-8080/tcpblog-solo

在我这个环境中,发现容器已经部署,但是容器运行有问题,使用码头日志查看相关报错如下:

2019年2月12日

 07:45:45.148 WARNING [localhost-startStop-1] org.apache.catalina.startup.SetContextPropertiesRule.begin [SetContextPropertiesRule]{Context} Setting property 'antiJARLocking' to 'true' did not find a matching property. 12-Feb-2019 07:45:49.546 INFO [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. [WARN ]-[2019-02-12 07:45:49]-[org.b3log.latke.Latkes:611]: !!!!Runtime mode is [DEVELOPMENT], please make sure configured it with [PRODUCTION] in latke.properties if deployed on production environment!!!! [ERROR]-[2019-02-12 07:45:51]-[org.b3log.latke.Latkes:836]: Read skin [Jane]'s  configuration failed: null [ERROR]-[2019-02-12 07:45:51]-[org.b3log.solo.SoloServletListener:302]: Can't load the default skins, please make sure skin [Jane] is under skins directory and structure correctly

    由于是应用方面的报错,没有深究,后面有空再看是什么原因。

    至此,这个实验已经做完。

总结:

    这个实验做下来,对我来说主要的难点在于不熟悉版本管理工具marven以及git等开发方面的工具,只能说对CI/CD持续集成部署做了一次简单的摸索。

    使用过程中遇到任何问题,首先看报错和日志,问题最多的地方是jenkins的pipeline脚本执行,在执行过程中,需要对脚本有一个充分的消化了解,碰到问题的时候,通过查看输入日志来定位问题所在。

    整个结构主要包括3个部分,镜像仓库harbor、jenkins、docker ,其中还有git仓库和git客户端,直接复用放在了harbor服务器上 。harbor是原来部署过的资源,jenkins是直接通过下载war包部署在tomcat上,docker与harbor之间的配置需要匹配,我的环境里面harbor配置的是http方式,需要在docker端配置insecure registry 。

    CI/CD持续集成部署对于开发测试来说还是非常有用的,这个实验是使用docker作为容器的运行环境(slave) ,另外,还可以使用kubernetes作为容器承载环境,配置会更复杂一些,但是部署完成后的使用会更加健壮和方便。这一块后续再花时间进行实践。

    

    

更多关于云服务器,域名注册,虚拟主机的问题,请访问西部数码官网:www.chenqinet.cn

相关推荐

后台-系统设置-扩展变量-手机广告位-内容页底部广告位3