Jenkins+docker+gitlab将应用部署到docker
文章发布较早,内容可能过时,阅读注意甄别。
# 1,准备工作。
所有的准备工作完成之后,就可以通过这个优秀的 Jenkins 进行项目构建了。
这里使用一个开源的 java 语言博客系统 halo 做测试。
项目地址:https://github.com/ruibaby/halo
同样,为了测试,可以先将项目 fork 到自己的 github 空间里,然后就能通过 Jenkins 来进行构建了。
这里所使用的 Jenkins,是上一篇文章当中自己构建成熟的镜像所跑起来的容器,本实验也是基于这个容器所做的。
这里所说的上一篇文章,如果您还没有看,那么建议先看一下,否则有可能会导致跟随本文构建而最终失败。那篇文章如下:
docker 学习笔记–利用 Dockerfile 创建一些基础镜像 |坐而言不如起而行! 二丫讲梵 (opens new window)
# 2,进入配置。
其他比较简单的步骤就不细说了,直奔主题。
创建一个项目,如图:
就是这么简单,这里直接贴出其中所用到的 shell 内容:
A=$BUILD_ID
B=`expr $BUILD_ID - 1`
source /etc/profile
project="halo"
cd $WORKSPACE && mvn clean package -Pprod
docker stop $project && sleep 10
docker rm $project && sleep 5
docker rmi $project:$B && sleep 5
cd $WORKSPACE/target/dist/halo
cat > halo.ini << EOF
[program:halo]
command=/usr/local/jdk1.8.0_144/bin/java -jar /opt/halo/halo-latest.jar
numprocs=1
autostart=true
autorestart=true
startsecs=60
EOF
cat > Dockerfile << EOF
FROM idocker.io/eryajf/jdk:1.8
MAINTAINER eryajf <Linuxlql@163.com>
ADD . /opt/halo
ADD halo.ini /etc/supervisor/conf.d
EXPOSE 8090
EOF
docker build -t $project:$A . && sleep 5
docker run -d --name $project -p 8090:8090 $project:$A
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
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
简单说明,因为这个是直接在本机进行的试验部署,因此所有的命令也都全部写在这里来了,执行完成之后,应用也会部署在本机当中。
首先对项目进行打包,接着先停掉服务,然后通过 Dockerfile 生成新的镜像,然后启动服务。
如果是异地部署,那么只需将镜像推往私服,然后调用一个远程脚本,进行应用的部署即可。
# 3,结果验证。
我们构建一下,看看效果如何:
这里看到构建已经成功了,那么去服务器上看看情况如何:
[root@localhost halo]$docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
halo 21 0ddee68e88db 13 minutes ago 955 MB
[root@localhost halo]$docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2be8bf8a32e4 halo:21 "/usr/bin/supervis..." 14 minutes ago Up 14 minutes 22/tcp, 0.0.0.0:8090->8090/tcp halo
1
2
3
4
5
6
7
2
3
4
5
6
7
看上去貌似已经没有问题了,那么访问一下这个应用:
填入一些基本信息,install 安装一下,然后进入后台界面:
接着也可以去看一下前台界面:
到这里,基本上 Jenkins 与 docker 结合的示例就完成了,有些东西我们还没做之前,会想象中觉得很难,但是当你真的对其一一了解之后,会发现其实并没有那么复杂。
上次更新: 2024/12/05, 21:39:23