docker通过Dockerfile制作tomcat镜像

1、准备镜像文件:tomcat压缩包、jdk压缩包,版本信息如下图所示:

 

2、编写dockerfile文件,官方命名:Dockerfile,build会自动寻找这个文件,不用 -f指定

FROM centos:7

MAINTAINER yanxiaoling572503145@qq.com

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

ADD jdk-8u202-linux-x64.tar.gz /usr/local/

ADD apache-tomcat-10.0.18.tar.gz /usr/local/

RUN  yum -y  install vim

ENV MYPATH /usr/local

WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_202

ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

ENV CATALINA_HOME /usr/local/apache-tomcat-10.0.18

ENV CATALINA_BASE /usr/local/apache-tomcat-10.0.18

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

EXPOSE 8080

CMD chmod 777 /usr/local/apache-tomcat-10.0.18/bin/startup.sh

CMD chmod 777 /usr/local/apache-tomcat-10.0.18/bin/version.sh

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

 

3、构建镜像:docker build -t diytomcat .

 

4、docker images 查看已构建的镜像:

 

5、启动容器并做挂载

docker run -d -p 9090:8080 --name yanxltomcat -v /home/yanxiaoling/build/tomcat/test:/usr/local/apache-tomcat-10.0.18/webapps/test -v /home/yanxiaoling/build/tomcat/tomcatlogs/:/usr/local/apache-tomcat-10.0.18/logs diytomcat

 

6、在宿主机访问9090端口测试可访问成功:curl localhost:9090

 

7、外网访问也可成功:

 

8、发布项目:

(由于启动容器的时候做了卷挂载,我们直接在本地编写项目就可以发布了。)

在挂载的test目录下mkdir WEB-INF,再写一个简单的web.xml文件

 

test目录下新建一个文件:index.jsp

外网访问宿主机的9090端口的test文件夹即可访问到index.jsp

 

9、若是访问失败,请继续往下看:

docker attach 容器ID

进入容器内部,再运行ps -ef 查看运行的进程,确认tomcat未运行后,进入tomcat的bin目录下,先执行chmod 777 startup.sh给startup.sh赋权,再执行./startup.sh运行下tomcat:

 

10、查看容器内安装的jdk版本:进入容器内部执行命令:java -version

 

11、查看安装的tomcat版本,进入tomcat安装目录下的bin目录,先执行命令:chmod 777 version.sh 命令赋权,再执行./version.sh命令查看版本信息,如下图所示,我安装的版本是:

apache-tomcat-10.0.18

 

12、容器内部执行命令:curl 127.0.0.1:8080 验证tomcat是否已运行成功。

 

13、在宿主机执行命令:curl localhost:9090 测试是否可访问容器内部的tomcat,如下图所示,访问成功:

 

 

posted @   小白成长记-yan  阅读(1207)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示