docker实战:dockerfile制作tomcat镜像

1 准备镜像文件 tomcat压缩包,jdk的压缩包!
下载tomcat我就不说了

下载JDK有很多版本,我们是在服务器centos上去用所以选择Linux版本,但是还会涉及到一个问题就是,选多少位的,我们这边可以用这个命令来看主机是多少位的:

getconf LONG_BIT

我这个是64位的,我就选择
在这里插入图片描述

在这里插入图片描述
2 编写Dockerfile文件
官方命名Dockerfile, build会自动寻找这个文件,就不需要-f指定了
以下是我的Dockerfile文件

注意:要根据自己的tomcat和jdk来编写Dockerfile,不要盲目的抄,要看好的tomcat版本和JDK版本名,以及解压的路径名(我这个JDK解压出来是jdk1.8.0_301不是和他的压缩文件名相同坑爹)


FROM centos
MAINTAINER zhangpeng<1477237223@qq.com>

COPY readme.md /usr/local/readme.md

ADD jdk-8u301-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.56.tar.gz /usr/local/

RUN yum -y install vim

ENV MYPATH /usr/local
WORKDIR $MYPATH

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

EXPOSE 8080

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

3 构建镜像

# 因为dockerfile命名使用默认命名 因此不用使用-f 指定文件
docker build -t mytomcat:0.1 .

4 创建容器

这里路径要弄好

 docker run -d -p 8000:8080 --name mytomcat -v /home/tomcat/build/tomcat/test:/usr/local/apache-tomcat-9.0.56/webapps/test -v /home/tomcat/build/tomcat/tomcatlogs/:/usr/local/apache-tomcat-9.0.56/logs mytomcat:0.1

5 测试容器并发布

我们的Dockerfile最后一句是如下

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

意思即使启动tomcat的意思,即使这个image一旦被创建容器,里面的tomcat就启动了

正常情况下你在宿主机上或者防火墙搞好的情况下再浏览器通过公网地址是可以访问的,如下:

在这里插入图片描述
在这里插入图片描述
但是问题肯定会有,即使压根没反应

这时候问题有两个来源一个是你这个容器镜像Dockerfile就有问题,一个是你的tomcat有问题(实际上tomcat有问题起不来,也是Dockefile的问题)

常见的容器的问题
docker没启动起来,查看docker ps -a 状态是existed,说明容器没有启动成功。
解决方法:查看容器日志

docker logs 容器id

通过容器日志来查看问题原因

常见的tomcat问题
就是tomcat没有启动成功,访问不到
解决方法:重现进入到容器内部,通过tomcat启动并打印日志来查看问题原因

# 建议用这种启动方式,控制信息可以输出
 ./catalina.sh run 

根据输出来判断tomcat起不来的原因,一般是dockerfile的JDK路径写错了

6 添加自己的东西到tomcat
既然是自己的,那就要加点自己的东西进去
我们到之前挂载的路径下面的test目录添加自己的index.jsp和WEB-INF目录以及下面的web.xml\

在这里插入图片描述

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>hello. xiaofan</title>
</head>
<body>
Hello World!<br/>
<%
System.out.println("-----zhangpeng test web logs------");
%>
</body>
</html>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
        
</web-app>
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值