jenkins+docker的简单项目部署

  • 时间:
  • 浏览:0
  • 来源:万人牛牛_万人牛牛官网

COPY /webapps/hello.txt /opt/webapps/          ----------这里把更新的代码hello.txt,传入镜像的相关目录,供resin使用。

16

14

1

  2:以dockerfile的办法,每次发布新版本时,把相应的守护进程包传入dockerfile,一起打包成一个新的web容器镜像,停止旧版本的容器,可是我我以新镜像启动容器。完成新版本发布。

  该例子可是我我一个简单的实践,生产环境肯定要冗杂的多,要根据具体项目制定不同的部署步骤和需求。可是我我类似例子可不并能 提供一个简单的思路给.我.我.我.我儿参考。

13

  1:配置docker私有仓库,安装jenkins。(不在 本博客范畴)

10

部署新项目:

17

5

  2:jenkins日后现在开始构建,拉取新的代码,利用dockerfile把新代码传入docker,制作一个全新的镜像,上传至本地的docker私有仓库。

9

12

这里我我我想要以dockerfile的办法做结合jenkins做一个简单的自动部署实验:

MAINTAINER chenminghui "359275360 @qq.com"

  该例子适用于针对单一的web部署的环境。

  4:查看页面:

为什使用docker实现新项目的发布,一般有并不是办法,以一个web容器为例:

ssh $IP "docker run -idt --name=${PROJECT}_${VERSION} -p 60 60 :60 60  registry.cmh.cn/test:${VERSION}"

  2:dockerfile,这里的dockerfile定制一个resin的images,具体配置和写法因人而异。

7

15

  3:项目服务器拉取新的镜像。

  4:jenkins新建一个构建工程,如下:(IP为web容器的ip,PROJECT为项目名称,VERSION为版本信息)

RUN cd /opt/apps/resin-pro-4.0.42 && yum install -y gcc make.x86_64 openssl.x86_64 openssl-devel.x86_64  && ./configure --prefix=/opt/apps/resin  --libexecdir=/opt/apps/resin/libexec  --enable-jni --enable-64bit && make && make install

10

后记:

7

VERSION=$3

4

11

15

  可不并能 看完新的代码日后 生效。

FROM centos_java

4

5

18

9

COPY gzlife-ad.xml /opt/conf/resin/

ssh $IP "docker pull registry.cmh.cn/test:${VERSION}"

3

  1:定制一个通用的web容器镜像,以逻辑卷-v的办法,关联webapp目录到宿主机,每次发布新版本时只并能 更新宿主机上关联目录的项目包(类似war包),可是我我重启web的相关docker容器。完成新版本发布。

3

本文转自 icenycmh 51CTO博客,原文链接:http://blog.51cto.com/icenycmh/1784735,如需转载请自行联系原作者

6

  当前运行的docker容器信息如下:

实验准备:

11

实验环境:

PROJECT=$2

17

ENV JAVA_HOME=/opt/apps/jdk1.8.0_51/

  首先po上共要的流程:

2

6

12

ENTRYPOINT sh /opt/scripts/resin.sh start && /bin/bash

#!/bin/sh

  构建日后 如此报错,则可不并能 看完SUCCESS的底部形态,说明构建部署完毕。

COPY pro.jar /opt/apps/resin/lib/ 

14

docker push registry.cmh.cn/test:${VERSION}

  jenkins:192.168.1.224

CONTAINER=`ssh $IP "docker ps | grep ${PROJECT}" awk '{print $1}'`

  可不并能 看完运行了新的容器,名字为test_V3,镜像使用的是registry.cmh.cn/test:V3。旧版本容器test_V2被关闭。

  3:静静听候构建完成:(可不并能 看看构建信息)

  当前的页面显示如下:(hello.txt充当本例要更新的代码次责)

  当前运行的web容器镜像为registry.cmh.cn/test:V2,容器名称为test_V2,容器内部人员的60 60 端口映射到宿主机的60 60 端口。

  3:jenkins所需的构建脚本,这里的脚本相对简单,主要可是我我传入IP,项目,版本一个参数。进行拉取代码,制作镜像,上传镜像,远程拉取镜像以及启动容器等。(具体的脚本各位看官可当事人写,这里可是我我做个简单的例子)

  这里我使用简单的一个web页面演示一个发布的流程,web容器使用的是resin。

echo "###########download new images and start new version of project##########"

echo "############git new code....#############"

18

  2:jenkins填写相关参数,日后现在开始构建:

实现:

echo "#################build new images and push to private registry###########"

16

ssh $IP "docker stop ${CONTAINER}"

  日后 发布的新版本有异常,可不并能 停止test_V3,启动test_V2。从前就可不并能 飞快实现版本的回退。

  1:更新hello.txt,push新代码至gitlab。

IP=$1

COPY gzlife-ad.sh /opt/scripts/resin.sh

2

8

19

  4:关闭原有在运行的项目容器,使用新的镜像开启容器。项目发布完成

RUN echo 'RESIN_HOME=/opt/apps/resin' >> /etc/profile && echo 'PATH=$PATH:$JAVA_HOME/bin/:$JAVA_HOME/jre/bin/' >> /etc/profle && source /etc/profile

git pull git@code.gzlife.cn:chenminghui/cmhtest.git

发布前情況:

EXPOSE 60 60

 5:查看容器运行情況

ADD resin-pro-4.0.42.tar.gz /opt/apps/

13

  以上准备好日后 ,就可不并能 日后现在开始跑.我.我.我.我儿的构建流程了。

8

1

  1:开发人员发布新代码,上传至本地gitlab。

  docker宿主机:192.168.1.120

docker build -t registry.cmh.cn/test:${VERSION} /opt/scripts/Dockerfile/resin

cd /opt/scripts/Dockerfile/resin/webapps