在centos操作系统中使用Dockerfile构建基于tomcat的web应用项目镜像

  

Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令,Docker程序将这些Dockerfile指令翻译真正的Linux命令;Dockerfile有自己书写格式和支持的命令,Docker程序解决这些命令间的依赖关系,类似于Makefile,Docker程序将读取Dockerfile,根据指令生成定制的image。Dockerfile的指令是忽略大小写的,建议使用大写,使用#作为注释,每一行只支持一条指令,每条指令可以携带多个参数。

1.1  准备阶段

软件版本:

操作系统版本:CentOS Linux release 7.6.1810 (Core)(windows下安装的虚拟机)

Docker版本: 17.12.0-ce

JDK版本: jdk-8u141-linux-x64.tar.gz

Tomcat版本: apache-tomcat-9.0.16.tar.gz(tomat默认端口是8080,我这里已经将端口修改为8081)

web应用程序:TestMyWeb.war

 在centos操作系统中使用Dockerfile构建基于tomcat的web应用项目镜像

 

1.2  Web应用程序准备

使用eclipse创建一个web工程,新建一个index.html极其简单的静态页面放在WebContent目录下,内容如下

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<title>Insert title here</title>

</head>

<body>

<h2>Hello,this JSP is from tomcat in docker </h2>

</body>

</html>

达成war包,名字为:TestMyWeb.war 在eclipse启动web服务后,使用如下命令检查是否OK:

curl localhost:8081/ TestMyWeb

1.3  创建Dockerfile

首先新建一个Dockerfile,内容如下:

#指定操作的镜像

FROM centos:latest

# 维护者信息

MAINTAINER taotao

#执行命令:创建目录

RUN mkdir -p /usr/local/mysoftware

#将jdk1.8.0_171添加到镜像centos的/usr/local/soft/目录下,并命名为jdk

ADD jdk1.8.0_141 /usr/local/mysoftware/jdk

#将apache-tomcat-9.0.16添加到镜像centos的/usr/local/mysoftware/目录下,并命名为tomcat

ADD apache-tomcat-9.0.16 /usr/local/mysoftware/tomcat

#将war包添加进webapps中

ADD TestMyWeb.war /usr/local/mysoftware/tomcat/webapps

#添加环境变量

ENV JAVA_HOME /usr/local/mysoftware/jdk

ENV CATALINA_HOME /usr/local/mysoftware/tomcat

ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin:$CATALINA_HOME/lib

ENV CATALINA_BASE /usr/local/mysoftware/tomcat

#暴露8081端口

EXPOSE 8081

#启动时运行tomcat

CMD /usr/local/mysoftware/tomcat/bin/startup.sh && tail -F /usr/local/mysoftware/tomcat/logs/catalina.out

 

说明:

FROM : 指定基础镜像,并且必须是第一条指令

MAINTAINER : 指定作者

RUN : 运行指定的命令

ADD : 复制命令,把文件复制到镜像中。

ENV : 设置环境变量

EXPOSE : 功能为暴漏容器运行时的监听端口给外部

CMD : 指定容器启动时运行的命令

 

1.4  通过build命令打包镜像

[root@master testdock]# docker build -f Dockerfile -t repostory/tao_tomcat .

Sending build context to Docker daemon  656.1MB

Step 1/12 : FROM centos:latest

 ---> 1e1148e4cc2c

Step 2/12 : MAINTAINER taoweizhong

 ---> Using cache

 ---> 3059d71462df

Step 3/12 : RUN mkdir -p /usr/local/mysoftware

 ---> Using cache

 ---> cb44edf0c68e

Step 4/12 : ADD jdk1.8.0_141 /usr/local/mysoftware/jdk

 ---> Using cache

 ---> a747ff9f8d0e

Step 5/12 : ADD apache-tomcat-9.0.16 /usr/local/mysoftware/tomcat

 ---> Using cache

 ---> 7286990c8347

Step 6/12 : ADD TestMyWeb.war /usr/local/mysoftware/tomcat/webapps

 ---> 0811f69088ff

Step 7/12 : ENV JAVA_HOME /usr/local/mysoftware/jdk

 ---> Running in ffc36c078a45

Removing intermediate container ffc36c078a45

 ---> cca8a439bf9b

Step 8/12 : ENV CATALINA_HOME /usr/local/mysoftware/tomcat

 ---> Running in 565cb8c01ea9

Removing intermediate container 565cb8c01ea9

 ---> e1ee83f6d265

Step 9/12 : ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin:$CATALINA_HOME/lib

 ---> Running in 942a346f137c

Removing intermediate container 942a346f137c

 ---> 09a9502375e4

Step 10/12 : ENV CATALINA_BASE /usr/local/mysoftware/tomcat

 ---> Running in d2e964d7a812

Removing intermediate container d2e964d7a812

 ---> b5097357dfd9

Step 11/12 : EXPOSE 8081

 ---> Running in ad69bb87a514

Removing intermediate container ad69bb87a514

 ---> 39e760d5a85f

Step 12/12 : CMD /usr/local/mysoftware/tomcat/bin/startup.sh && tail -F /usr/local/mysoftware/tomcat/logs/catalina.out

 ---> Running in 304f2e7b43a6

Removing intermediate container 304f2e7b43a6

 ---> 90e4842f2531

Successfully built 90e4842f2531

Successfully tagged repostory/tao_tomcat:latest

1.5  查看生成的镜像文件

[root@master testdock]# docker images

REPOSITORY             TAG    IMAGE ID                   CREATED             SIZE

repostory/tao_tomcat  latest   90e4842f2531          8 minutes ago          593MB

 

1.6  运行镜像

[root@master testdock]# docker run -d -p 8081:8081 --name taotao -v /home/taoweizhong/testdock/log/:/usr/local/mysoftware/tomcat/logs --privileged=true repostory/tao_tomcat

2acf6e0f0c0ef5df14ea1a229073419883053fbe4e82b1a361828bdf5f8341e1

备注:这里将tomcat的日志目录/usr/local/mysoftware/tomcat/logs挂在在宿主机的/home/taoweizhong/testdock/log/,等容器启动后,我们可以直接在宿主机的目录检查tomcat的运行日志。

1.7  查看启动的容器

[root@master testdock]# docker ps

 在centos操作系统中使用Dockerfile构建基于tomcat的web应用项目镜像

1.8  到宿主机目录检查tomcat的日志

检查/home/taoweizhong/testdock/log中tomcat的日志

[root@master log]# pwd

/home/taoweizhong/testdock/log

[root@master log]# ll

-rw-r-----. 1 root root  6525 Mar 27 05:31 catalina.2019-03-27.log

-rw-r-----. 1 root root 12795 Mar 27 05:31 catalina.out

-rw-r-----. 1 root root     0 Mar 27 05:31 host-manager.2019-03-27.log

-rw-r-----. 1 root root   408 Mar 27 05:31 localhost.2019-03-27.log

-rw-r-----. 1 root root   310 Mar 27 05:43 localhost_access_log.2019-03-27.txt

-rw-r-----. 1 root root     0 Mar 27 05:31 manager.2019-03-27.log

 

1.9  访问容器内的web应用程序

1、进入容器内访问web应用程序:

 [root@master testdock]# docker exec -it 26f23224c401 /bin/bash

 [root@26f23224c401 /]# curl localhost:8081/ TestMyWeb/

 在centos操作系统中使用Dockerfile构建基于tomcat的web应用项目镜像

 

2、在虚拟机内访问;

[root@26f23224c401 /]# exit

exit

[root@master testdock]# curl http://localhost:8081/TestMyWeb/

 在centos操作系统中使用Dockerfile构建基于tomcat的web应用项目镜像

 

3、在windows宿主机访问(注意这里地址是虚拟机的IP);

C:\Users\45014>curl http://192.168.135.128:8081/TestMyWeb/

 

  在centos操作系统中使用Dockerfile构建基于tomcat的web应用项目镜像

 

上一篇:ASP.NET Core搭建多层网站架构【7-编写角色业务的增删改查】


下一篇:postman + newman + jenkins(win系统,安装node.js)