实战:dockerfile制作tomcat镜像
1,准备镜像文件 tomcat 和jdk的压缩包
如果没有压缩包的话点击下方链接下载
jdk:
链接:https://pan.baidu.com/s/1qvc_54hUzIGdNlBdALfuXQ
提取码:dquo
tomcat :
链接:https://pan.baidu.com/s/1xs4-o94XUWs5p4Dbcn-5jQ
提取码:dqgm
2,编写dockerfile文件
官方命令 Dockerfile,build时会自动寻找这个文件,不需要-f 指定了
文件内容:
FROM centos:7
MAINTAINER wz<124114543qq.com>
COPY readme.txt /usr/local/readme.txt
ADD jdk1.8.0_221.tar.gz /usr/local/
ADD apache-tomcat-9.0.21.tar.gz /usr/local/
RUN yum -y install vim
ENV MYPATH /usr/local
WORKDIR $MYPATH
ENV JAVA_HOME /usr/local/jdk1.8.0_221
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.21
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.21
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE 8080
CMD /usr/local/apache-tomcat-9.0.21/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.2/bin/logs/catalina.out
3,开始构建镜像
docker build -t diytomcat .(“.” 不能忘了)
如果构建时出现一下报错:
Error response from daemon: failed to parse Dockerfile: ENV must have two arguments
参考此链接:https://www.cnblogs.com/zypdbk/p/16043989.html
4,运行容器
docker run -d -p 9090:8080 --name wztomcat -v /home/slime/test:/usr/local/apache-tomcat-9.0.21/webapps/test -v /home/slime/tomcatlogs/:/usr/local/apache-tomcat-9.0.21/logs diytomcat
之后我们就看到文件挂载成功!
我们进入容器看看,发现该有的东西都有
docker exec -it e0b478f68232 /bin/bash
可以curl localhost:9090测试一下
我们也可以去在本机访问一下
5,发布项目(由于本地做了卷挂载,我们直接在本地编写项目即可)
在test目录下新建一个WEB-INF目录和index.jsp文件,在WEB-INF目录下新建一个web.xml文件
[root@CentOs slime]# cd test/
[root@CentOs test]# ls
[root@CentOs test]# mkdir WEB-INF
[root@CentOs test]# cd WEB-INF/
[root@CentOs WEB-INF]# vim web.xml
[root@CentOs WEB-INF]#
web.xml代码:
不同的tomcat版本有着不同的配置代码:
servlet 2.5 [Tomcat 6.0.x(archived)]
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
...
</web-app>
servlet 3.0 [Tomcat 7.0.x]
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0" metadata-complete="true">
...
</web-app>
servlet 3.1 [Tomcat 8.0.x (superseded) & 8.5.x]
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1" metadata-complete="true">
...
</web-app>
servlet 4.0 [Tomcat 9.0.x]
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0" metadata-complete="true">
...
</web-app>
index.jsp代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>hello world</title>
</head>
<body>
<%
out.println("Hello World!");
%>
</body>(注意:这里复制进去会有多余的%,记得删掉)
</html>(注意:这里复制进去会有多余的%,记得删掉)
(这个可以到菜鸟教程里面的JSP教程找!)
6,继续访问,就可以发现部署上去的项目了
进入日志,之后可以查看了
cat catalina.out