docker构建随容器启动而启动的web服务

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/henni_719/article/details/80660213

背景

 基于jdk1.7.0_79,tomcat7.0,镜像centos:6.9这些资源,通过命令:

docker run -it -p 8080:8080 --name tomcat -v /home/tomcat:/home/tomcat centos:6.9 bin/bash

 创建了容器tomcat,进入容器后,进入到容器的/home/tomcat目录下,解压压缩文件,把文件移动到容器的/usr/local目录下面。vi /etc/profile添加java与tomcat环境设置。

  上面简略构建了tomcat容器。然后退出容器:exit,执行:

docker commit tomcat centos:tomcat

  基于镜像centos:6.9镜像创建新的版本:centos:tomcat。

  本人有个项目,项目的war包是:rest.war。我把war包放入宿主机的/home/tomcat目录下,执行命令:

docker run -id -p 8081:8080 --name rest -v /home/tomcat:/home/tomcat centos:tomcat

  创建新的容器rest并在后台运行,执行:

docker exec -it rest bash

  进入容器,进入到/home/tomcat,解压rest.war包,到rest目录下:


cd /home/tomcat
mkdir rest
cd rest
cp ../rest.war .
rm -rf ../rest.war
jar -xvf rest.war

 然后在tomcat目录下的server.xml添加如下:

<Context path="rest" docBase="/home/tomcat/rest" allowLinking="true"></Context>

上述配置完毕后,在宿主机执行命令:

docker  exec -it rest /usr/local/tomcat7.0/bin/catalina.sh run

一直提示:/rest,内存泄漏(memery leak),进入容器执行启动tomcat正常。

操作

  由于我要通过jenkins集成,上述那个是不满足我后期要求的。就进行centos:tomcat,我写了个简单的Dockerfile,在启动容器时就能启动tomcat服务。Dockerfile如下:

FROM centos:tomcat
CMD /usr/local/tomcat7.0/bin/catalina.sh run
进入到Dokcerfile所在目录,执行命令:
docker build -t centos:rest .

执行成功后。执行命令:docker container ls -a,查看所有容器。执行名:docker container rm -f rest,强制删除容器rest。

然后执行命令:docker container prune ,删除所有容器。容器删除成功后,执行命令:

docker run -id -p 8080:8080 --name rest -v /home/tomcat:/home/tomcat centos:rest 

这个时候在宿主机执行命令:ifconfig,查看宿主机ip,假如为:192.168.78.12,在浏览器输入:http://192.168.78.12:8080/rest,能成功进入到rest的wen页面。

通过docker start rest启动web服务,通过docker stop rest关闭web服务。这两个命令在jenkins中集成打包部署war包时,在shell中是很好用的!

以上是操作实例,在内网,无法截图,如果有问题,可以加群,进行讨论!


  

  



猜你喜欢

转载自blog.csdn.net/henni_719/article/details/80660213