docker 从harbor 拉取镜像慢_基于 Jenkins+Docker+Git 的CI流程初探

在如今的互联网时代,随着软件开发复杂度的不断提高,软件开发和发布管理也越来越重要。目前已经形成一套标准的流程,最重要的组成部分就是持续集成(Continuous Integration,CI)及持续部署、交付(CD)。在此,我们来以一个案例初步了解 CI 流程。那么什么是 CI 呢?简单来讲,CI 就是将传统的代码合并、构建、部署、测试都集成在一起,不断地执行这个过程,并对结果进行反馈。

CI 流程设计图:

a6e338ad28154daf7ba9fe0339b4a4f2.png
1694b8748713a5bd6e84e7c62af9aaf3.png

工作流程:

1. 开发人员提交代码到Git版本仓库;

2. Jenkins人工/定时触发项目构建;

3. Jenkins拉取代码、代码编码、打包镜像、推送到镜像仓库;

4. Jenkins在Docker主机创建容器并发布

主机环境规划:

docker-jenkins: 10.0.0.98

docker-git-harbor:10.0.0.99

1. 部署Git代码版本仓库

安装:

1

[root@docker-git-harbor ~]# yum install git -y

配置git用户:

1

2

[root@docker-git-harbor ~]# useradd git

[root@docker-git-harbor ~]# passwd git

创建库:

1

2

3

4

5

6

7

[git@docker-git-harbor ~]$ mkdir tomcat-java-demo.git

[git@docker-git-harbor ~]$ cd tomcat-java-demo.git/

[git@docker-git-harbor tomcat-java-demo.git]$ git --bare init

Initialized empty Git repository in /home/git/tomcat-java-demo.git/

[git@docker-git-harbor tomcat-java-demo.git]$ ls

branches config description HEAD hooks info objects refs

[git@docker-git-harbor tomcat-java-demo.git]$

另一台docker-jenkins访问该仓库:

1

2

3

4

5

6

7

8

9

10

11

12

13

[root@docker-jenkins ~]# git clone git@10.0.0.99:/home/git/tomcat-java-demo.git

Cloning into 'solo'...

The authenticity of host '10.0.0.99 (10.0.0.99)' can't be established.

ECDSA key fingerprint is SHA256:XNWQhGsAsqd84k/6OYV3xl1+mPGjtASsxeV1YVLZVas.

ECDSA key fingerprint is MD5:b4:bd:16:2b:de:e7:7c:fd:c5:dd:91:75:20:ff:3e:0a.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '10.0.0.99' (ECDSA) to the list of known hosts.

git@10.0.0.99's password:

warning: You appear to have cloned an empty repository.

[root@docker-jenkins ~]# ls

anaconda-ks.cfg tomcat-java-demo.git

[root@docker-jenkins ~]# ls tomcat-java-demo.git

[root@docker-jenkins ~]#

模拟生产项目,拉取github上的一个demo,并上传至本地git库

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

[root@docker-jenkins ~]# mv tomcat-java-demo tomcat-java-demo.bak

[root@docker-jenkins ~]# git clone https://github.com/dingkai163/tomcat-java-demo.git

[root@docker-jenkins tomcat-java-demo]# cat .git/config

[core]

repositoryformatversion = 0

filemode = true

bare = false

logallrefupdates = true

[remote "origin"]

url = git@10.0.0.99:/home/git/tomcat-java-demo.git # 修改为本地的git库地址

fetch = +refs/heads/*:refs/remotes/origin/*

[branch "master"]

remote = origin

merge = refs/heads/master

[root@docker-jenkins tomcat-java-demo]# git add .

[root@docker-jenkins tomcat-java-demo]# git status

# On branch master

nothing to commit, working directory clean

[root@docker-jenkins tomcat-java-demo]# git commit -m "all"

# On branch master

nothing to commit, working directory clean

[root@docker-jenkins tomcat-java-demo]# git push origin master

git@10.0.0.99's password:

Counting objects: 229, done.

Compressing objects: 100% (185/185), done.

Writing objects: 100% (229/229), 4.52 MiB | 0 bytes/s, done.

Total 229 (delta 25), reused 229 (delta 25)

To git@10.0.0.99:/home/git/tomcat-java-demo.git

* [new branch] master -> master

[root@docker-jenkins tomcat-java-demo]#

2. jenkins环境部署

部署jdk环境及maven

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

[root@docker-jenkins ~]# mkdir tools

[root@docker-jenkins ~]# cd tools

[root@docker-jenkins tools]# rz -y

[root@docker-jenkins tools]# tar zxvf jdk-8u45-linux-x64.tar.gz

[root@docker-jenkins tools]# mv jdk1.8.0_45 /usr/local/jdk

[root@docker-jenkins tools]# vim /etc/profile

JAVA_HOME=/usr/local/jdk

PATH=$PATH:$JAVA_HOME/bin CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export JAVA_HOME PATH CLASSPATH

[root@docker-jenkins tools]# source /etc/profile

[root@docker-jenkins tools]# java -version

java version "1.8.0_45"

Java(TM) SE Runtime Environment (build 1.8.0_45-b14)

Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

[root@docker-jenkins tools]# tar zxf apache-maven-3.5.0-bin.tar.gz

[root@docker-jenkins tools]# mv apache-maven-3.5.0 /usr/local/maven

在10.0.0.98主机安装Jenkins,下载Tomcat二进制包将war包到webapps下即可:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

[root@docker-jenkins tools]# wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war

[root@docker-jenkins tools]# wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v8.5.38/bin/apache-tomcat-8.5.38.tar.gz

[root@docker-jenkins tools]# tar zxf apache-tomcat-8.5.38.tar.gz

[root@docker-jenkins tools]# ls

apache-tomcat-8.5.38 apache-tomcat-8.5.38.tar.gz jdk-8u45-linux-x64.tar.gz jenkins.war

[root@docker-jenkins tools]# mv apache-tomcat-8.5.38 /usr/local/tomcat-jenkins

[root@docker-jenkins tools]# ls /usr/local/tomcat-jenkins/webapps/

docs examples host-manager manager ROOT

[root@docker-jenkins tools]# rm -rf /usr/local/tomcat-jenkins/webapps/*

[root@docker-jenkins tools]# mv jenkins.war /usr/local/tomcat-jenkins/webapps/ROOT.war

[root@docker-jenkins tools]# ll /usr/local/tomcat-jenkins/webapps/

total 75520

-rw-r--r--. 1 root root 77330344 Mar 15 00:55 ROOT.war

[root@docker-jenkins tools]# cd /usr/local/tomcat-jenkins/bin/

[root@docker-jenkins bin]# ./startup.sh

Using CATALINA_BASE: /usr/local/tomcat-jenkins

Using CATALINA_HOME: /usr/local/tomcat-jenkins

Using CATALINA_TMPDIR: /usr/local/tomcat-jenkins/temp

Using JRE_HOME: /usr/local/jdk1.8

Using CLASSPATH: /usr/local/tomcat-jenkins/bin/bootstrap.jar:/usr/local/tomcat-jenkins/bin/tomcat-juli.jar

Tomcat started.

[root@docker-jenkins bin]#

启动后,浏览器访问http://10.0.0.98:8080/,按提示输入密码,登录即可。

0be2739f0997a238fadd6469ce0599cf.png

3. 部署私有镜像仓库

企业级harbor镜像仓库部署:

https://www.cnblogs.com/kaye/p/10524391.html

构建Tomcat基础镜像,并推送到harbor镜像库:

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

[root@docker-git-harbor ~]# cd tomcat

[root@docker-git-harbor tomcat]# cat Dockerfile-tomcat

FROM centos:7

MAINTAINER www.cnblogs.com/kaye/

ENV VERSION=8.5.38

RUN yum install java-1.8.0-openjdk wget curl unzip iproute net-tools -y &&

yum clean all &&

rm -rf /var/cache/yum/*

RUN wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v${VERSION}/bin/apachetomcat-${VERSION}.tar.gz &&

tar zxf apache-tomcat-${VERSION}.tar.gz &&

mv apache-tomcat-${VERSION} /usr/local/tomcat &&

rm -rf apache-tomcat-${VERSION}.tar.gz /usr/local/tomcat/webapps/* &&

mkdir /usr/local/tomcat/webapps/test &&

echo "ok" > /usr/local/tomcat/webapps/test/status.html &&

sed -i '1a JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom"' /usr/local/tomcat/bin/catalina.sh &&

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

ENV PATH $PATH:/usr/local/tomcat/bin

EXPOSE 8080

CMD ["catalina.sh

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值