1、下载jdk和tomcat压缩包,我下载的是(下载地址不附了,反正是官网)
jdk-18_linux-x64_bin.tar.gz
apache-tomcat-9.0.65.tar.gz
2、编写dockerfile文件
废话不多说先贴dockerfile
FROM centos:7
MAINTAINER 1786690@qq.com
COPY readme.md /usr/local/readme.md
ADD jdk-18_linux-x64_bin.tar.gz /usr/local/
#复制并解压jdk-18_linux-x64_bin.tar.gz包到/usr/local/目录下
ADD apache-tomcat-9.0.65.tar.gz /usr/local/
#复制并解压apache-tomcat-9.0.65.tar.gz包到/usr/local/目录下
RUN yum -y install vim
ENV MYPATH /usr/local
WORKDIR $MYPATH
ENV JAVA_HOME /usr/local/jdk-18.0.2
#添加JAVA环境变量
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#添加JAVA环境变量
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.65
#添加TOMCAT环境变量
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.65
#添加TOMCAT环境变量
ENV PATH $PATH:$JAVA_HOME/bin;$CATALINA_HOME/lib;$CATALINA_HOME/bin
EXPOSE 8080
#暴露端口8080
CMD /usr/local/apache-tomcat-9.0.65/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.65/logs/catalina.out
3、构建镜像
docker build -t mytomcat:1.0 .
可以用 docker images 查看镜像是否成功
4、运行镜像
docker run -d -p 8000:8080 --name mytomcat -v D:/docker/test:/usr/local/apache-tomcat-9.0.65/webapps/test -v D:/docker/test/logs/:/usr/local/apache-tomcat-9.0.65/logs mytomcat:1.0
说明:
8000为宿主机端口 8080为容器端口(dockerfile文件中暴露的端口)
-v 目录1:/目录2(目录1为宿主机目录,目录2为容器运行中镜像目录)
5、访问测试
运行命令docker -ps a
浏览器打开http://127.0.0.1:8000/ tomcat启动成功
命令查看:
docker exec -it a05acc15c14c551bb3059(部分即可) /bin/bash
同时我们也可以查看宿主机的logs目录内生成了对应的tomcat运行日志
6、发布项目并测试
停止镜像
docker stop a05acc15c14c551bb3059(貌似命令不生效,直接桌面关闭)
1 在test目录下新建index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>hello</title>
</head>
<body>
Hello World!!!<br/>
</body>
</html>
2 新建WEB-INF目录,并新建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 访问http://127.0.0.1:8000/test/
动态修改jsp页面内容,不用重启镜像。
下面说明整个过程中我遇到的问题.
1、ERROR COPY 问题: 这里只是目录问题 ,让你的dockerfile文件和tomcat、jdk压缩文件在同一个目录下,且执行build命令的目录也在次目录下.
我当时就没有切换目录直接运行 docker build -f D:\docker\tomcat\Dockerfile -t mytomcat:1.0 . 想着是绝对目录没有问题。最后生成执行过程中就报了 COPY ADD 错误
2、The command ‘/bin/sh -c yum -y install vim 问题:解决方案网上找的,就是centos的版本问题需要加上:7
3、一个弱智问题:windows环境下执行build 命令需要移除dockerfile文件的 .txt后缀名