Dockerfile制作tomcat镜像

1.创建/home/docker目录,导入jdk和tomcat的压缩包文件

请添加图片描述

2.编写Dockerfile文件,并且命名为Dockerfile。

[root@iZwz9bpgwmtcokdzlg5sv0Z docker]# vim Dockerfile
[root@iZwz9bpgwmtcokdzlg5sv0Z docker]# cat Dockerfile 
FROM centos
MAINTAINER xiaohe<1687184886@qq.com>

COPY readme.txt /usr/local/readme.txt

ADD jdk-8u162-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-8.5.69.tar.gz /usr/local/


ENV MYPATH /usr/local
WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_162
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.69
ENV CATALINA_BASH /usr/local/apache-tomcat-8.5.69
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

EXPOSE 8080

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

这里已经编写好了Dockerfile文件。ENV命令为配置jdk和tomcat的环境变量,WORKDIR命令为指定工作目录,即进入容器后显示的目录,EXPOSE命令为暴露该容器的8080端口,ADD命令则把需要的文件添加,这里运行镜像后他会自动解压到/usr/lcoal。

注意:Dockerfile文件中编写的所有命令关键字都是全大写!

3.使用build命令构建镜像

#注意这里的命令结尾一定要加上英文句号,否则会报错
#这里使用build命令之后它会自动寻找名为Dockerfile的镜像文件,所以这里不需要用-f参数,但是如果用其他命名则需要用-f指定
#这里的-t是指定镜像名字
[root@iZwz9bpgwmtcokdzlg5sv0Z mytomcat]# docker build -t diytomcat .

运行结果:

[root@iZwz9bpgwmtcokdzlg5sv0Z mytomcat]# docker build -t diytomcat .
Sending build context to Docker daemon  205.7MB
Step 1/14 : FROM centos
 ---> 5d0da3dc9764
Step 2/14 : MAINTAINER xiaohe<1687184886@qq.com>
 ---> Running in db0feb790afd
Removing intermediate container db0feb790afd
 ---> 95115ff4fa95
Step 3/14 : COPY readme.txt /usr/local/readme.txt
 ---> 576636be85ea
Step 4/14 : ADD jdk-8u162-linux-x64.tar.gz /usr/local/
 ---> bbfa8f69021a
Step 5/14 : ADD apache-tomcat-8.5.69.rar /usr/local/
 ---> 3a465837c2da
Step 6/14 : ENV MYPATH /usr/local
 ---> Running in 710e74e1e06b
Removing intermediate container 710e74e1e06b
 ---> 19a6512e66a8
Step 7/14 : WORKDIR $MYPATH
 ---> Running in 5c946a8a2b8a
Removing intermediate container 5c946a8a2b8a
 ---> 2f5582e94df1
Step 8/14 : ENV JAVA_HOME /usr/local/jdk1.8.0_162
 ---> Running in b431b1df7563
Removing intermediate container b431b1df7563
 ---> 37469a9d94e6
Step 9/14 : ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
 ---> Running in a4836d62dd96
Removing intermediate container a4836d62dd96
 ---> cb522bf1ec5c
Step 10/14 : ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.69
 ---> Running in e829ba3ca820
Removing intermediate container e829ba3ca820
 ---> 90de963f7d85
Step 11/14 : ENV CATALINA_BASH /usr/local/apache-tomcat-8.5.69
 ---> Running in 9dd2f2892eca
Removing intermediate container 9dd2f2892eca
 ---> 27dc0c0e9c03
Step 12/14 : ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
 ---> Running in 965bf00449c9
Removing intermediate container 965bf00449c9
 ---> 7d84b724668e
Step 13/14 : EXPOSE 8080
 ---> Running in e2bc0c41ef21
Removing intermediate container e2bc0c41ef21
 ---> a74107828eb2
Step 14/14 : CMD /usr/local/apache-tomcat-8.5.69/bin/startup.sh && tail -F /usr/local/apache-tomcat-8.5.69/bin/logs/catalina.out
 ---> Running in d6a3ac2227db
Removing intermediate container d6a3ac2227db
 ---> 82bb367a999f
Successfully built 82bb367a999f
Successfully tagged diytomcat:latest

请添加图片描述

4.运行镜像

[root@iZwz9bpgwmtcokdzlg5sv0Z mytomcat]# docker run -it -p 81:8080 --name xiaohetomcat1 -v /home/xiaohe/build/tomcat/test:/usr/local/apache-tomcat-8.5.69/webapps/test -v /home/xiaohe/build/tomcat/tomcatlogs/:/usr/local/apache-tomcat-8.5.69/logs diytomcat

这里主机的81端口与容器内的8080端口形成映射,用服务器IP+81端口号则可以访问容器内的8080端口。两个-v分别把tomcat的webapps目录与logs目录与主机指定目录挂载,把项目挂载到主机内的目录就可以同步到容器内webapps目录,在主机内部署后则可以直接访问。

5.测试访问

在主机内的webapps目录中放置web.xml和简单的html页面,访问主机的81端口,观察是否能够访问。

本文章参考b站狂神Docker教学,具体请观看视频
https://www.bilibili.com/video/BV1og4y1q7M4?p=30

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐