22.使用DockerFile构建tomcat
使用Dockerfile构建tomcat,需要提前准备好tomcat包、jdk包。
tomcat官网:https://tomcat.apache.org
jdk官网:https://www.oracle.com/java/technologies/java-se-glance.html
可以参考如下文档,查看如何下载jdk、tomcat
如何去Tocat官网下载tomcat(https://jingyan.baidu.com/article/a24b33cd3c721319fe002be0.html)
如何从官网下载JDK(https://jingyan.baidu.com/article/656db9184b9ebca381249cbc.html)
22.1. 编写Dockerfile文件
上传jdk、tomcat的tar.gz包到服务器
编写Dockerfile
# 指定基础镜像
FROM centos
# 执行作者信息
MAINTAINER doubleWang<739455347@qq.com>
COPY readme.txt /usr/local/readme.txt
ADD jdk-8u321-linux-x64.tar.gz /usr/local
ADD apache-tomcat-9.0.22.tar.gz /usr/local
# 修改centos中yum源的地址
RUN sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-*
RUN sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g" /etc/yum.repos.d/CentOS-*
RUN yum -y install vim
ENV MYPATH /usr/local
WORKDIR $MYPATH
# 配置环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_321
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.22
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.22
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
# 暴露端口
EXPOSE 8080
CMD /usr/local/apache-tomcat-9.0.22/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.22/bin/logs/catalina.out
如下图:
22.2. 构建tomcat镜像
使用docker build ...
命令构建镜像
docker build -t doublewang/tomcat .
从上面的命令中,可以看到没有写-f ${dockerfile名称}
,这是由于docker build
命令构建时,如果dockerfile文件的名称是“Dockerfile”(这个名称是官方推荐的),所以在使用Dockerfile
给文件命名时,构建命令,可以不用指定-f ${dockerfile名称}
。
构建完成,如下图:
22.3. 启动镜像
docker run -d -p 9090:8080 --name doublewang-tomcat -v /home/dockerfile_test/java/webapp1:/usr/local/apache-tomcat-9.0.22/webapps/webapp1 -v /usr/local/apache-tomcat-9.0.22/webapps/webapp1-logs:/usr/local/apache-tomcat-9.0.22/logs doublewang/tomcat
启动成功后,发现webapp1已经挂载成功,如下图:
进入容器进行查看,如下图:
22.4. 测试
测试tomcat是否启动成功
使用命令curl进行测试,如下图:
通过外网访问,如下图:
22.5. 手动发布项目
由于我们宿主机与容器内的tomcat下webapps目录做了挂载,因此,我们在宿主机中放一个web项目,会直接发布到容器中,接下来我们进行测试。
普通的web项目包含这几块:
- WEB-INF
- web.xml
- index.jsp
进入项目目录下:
[root@iZ8vb6lqqya4rvreq9ra6gZ java]# pwd
/home/dockerfile_test/java
[root@iZ8vb6lqqya4rvreq9ra6gZ java]# ll
total 154064
-rw-r--r-- 1 root root 10929702 Mar 1 17:21 apache-tomcat-9.0.22.tar.gz
-rw-r--r-- 1 root root 913 Mar 1 19:51 Dockerfile
-rw-r--r-- 1 root root 146815279 Mar 1 17:21 jdk-8u321-linux-x64.tar.gz
-rw-r--r-- 1 root root 0 Mar 1 19:52 readme.txt
drwxr-xr-x 2 root root 4096 Mar 1 20:09 webapp1
[root@iZ8vb6lqqya4rvreq9ra6gZ java]# cd webapp1/
[root@iZ8vb6lqqya4rvreq9ra6gZ webapp1]# ls
[root@iZ8vb6lqqya4rvreq9ra6gZ webapp1]#
创建WEB-INF文件夹
mkdir WEB-INF
创建一个web.xml
<?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_4_0.xsd"
version="4.0"
metadata-complete="true">
</web-app>
创建index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<body>
<h2>Hello World!</h2>
<%
out.println("your IP : " + request.getRemoteAddr());
%>
</body>
</html>
测试访问
在浏览器中访问:http://8.142.24.3:9090/webapp1/
如下图:
查看日志是否挂载成功
可以看到,日志也挂载成功了。
至此,使用docker发布普通的web项目成功!!!
---------------------------EOF-----------------------------