一、环境打算

首先打算一台Centos7的虚拟机并安装Docker。

docker部署java应用_ Docker 镜像构建 Tomcat Web应用 _Centos 7 Dockerfile 构建 Tomcat Java 项目

docker成功安装

打算好Tomct、JDK的安装包以及该java项目的War包。

 Docker 镜像构建 Tomcat Web应用 _Centos 7 Dockerfile 构建 Tomcat Java 项目 _docker部署java应用

工具打算

二、编写Dockerfile

Dockerfile是一个由一条条指令组成的文本文件linux启动盘制作工具,通过它能快速地建立docker镜像。

本文的Dockerfile内容如下:

FROMcentos

ADDjdk-8u161-linux-x64.tar.gz/usr/local/

ADDapache-tomcat-8.5.29.tar.gz/usr/local/

ENVJAVA_HOME/usr/local/jdk1.8.0_161

ENVCLASSPATH$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

ENVCATALINA_HOME/usr/local/apache-tomcat-8.5.29

ENVCATALINA_BASE/usr/local/apache-tomcat-8.5.29

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

ADD./TRMS_HK.war/usr/local/apache-tomcat-8.5.29/webapps

EXPOSE8080

CMD/usr/local/apache-tomcat-8.5.29/bin/catalina.shrun

解释:

(1)FROMcentos表示从docker官方库房中获取centos基础镜像

(2)ADDjdk-8u161-linux-x64.tar.gz/usr/local/将当前目录下(与Dockerfile同一级目录)的jdk添加到镜像的/usr/local/中

(3)ENVJAVA_HOME/usr/local/jdk1.8.0_161设置Java的环境变量

(4)EXPOSE8080对外曝露的端口,以便外部访问

(5)CMD/usr/local/apache-tomcat-8.5.29/bin/catalina.shrun容器运行后执行的命令,倘若有多条CMD也只有最后一条有效。

三、构建镜像

命令:dockerbuild-twebapp.(注意最后的.)

该命令会在当前目录下寻觅Dockerfile文件,并手动完成打造。

-twebapp表示给建立完成的镜像取一个名子。

Centos 7 Dockerfile 构建 Tomcat Java 项目 _docker部署java应用_ Docker 镜像构建 Tomcat Web应用

镜像建立成功

命令:dockerimages查看镜像信息

四、运行容器

命令:dockerrun-d-p8090:8080webapp

-d表示后台运行容器,并返回容器ID

-p使用端口映射,8090:8080表示将容器的8080端口映射到主机的8090端口。

查看运行的所有容器

命令:dockerps-all

正常运行的容器.PNG

可以看见该容器的运行状态linux 版本,端口映射等信息docker部署java应用,表明容器运行成功。

五、测试布署结果

本地浏览器访问::8090

测试结果

六、问题总结:

(1)安装Docker后,未能pull基础镜像,报如下错误:

x509certificatehasexpiredorisnotyetvalid

时间同步问题,须要下载ntpd,并进行时间同步。

(2)使用dockerrun并设置端口映射,难以正常运行,报如下错误:

WARNING:IPv4forwardingisdisabled.Networkingwillnotwork.

解决办法:

vi/usr/lib/sysctl.d/00-system.conf

添加:net.ipv4.ip_forward=1

重启network服务

systemctlrestartnetwork

完成之后,删掉错误的容器docker部署java应用,再度创建新容器,就不再报错了

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复