1. 前言
准备相关文件
- 下载jdk、tomcat,下面是两个下载链接
2. 制作镜像
- 准备镜像文件tomcat压缩包,jdk压缩包
- 编写dockerfile文件,官方命名
Dockerfile
,bulid会自动寻找这个文件,就不需要加-f
指定了
touch readme.txt vim Dockerfile
- 编写
Dockerfile
文件内容
# 镜像使用的基础镜像 FROM centos # 指明镜像的作者 MAINTAINER henggao<genghenggao@outlook.com> # 添加压缩包,会自动解压,需提前下载放到 Dockerfile 文件所在目录 ADD jdk-8u202-linux-x64.tar.gz /usr/local/ ADD apache-tomcat-9.0.55.tar.gz /usr/local/ # 类似ADD指令,将文件拷贝到镜像中,需提前编写放到 Dockerfile 文件所在目录 COPY readme.txt /usr/local/readme.txt # 镜像构建时需要运行的命令 RUN yum -y install vim RUN yum -y install net-tools # 构建时设置环境变量 ENV MYPATH /usr/local # 镜像的工作目录,启动容器后进入的目录 WORKDIR $MYPATH # 设置 JAVA 环境变量 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-9.0.55 ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.55 ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin # 指定对外的暴露端口 EXPOSE 8080 # 匿名挂载数据卷 VOLUME ["volume01","volume02"] # 容器启动时需要运行的命令,多个CMD命令只有最后一个会生效 # CMD中的命令会被docker run的命令完全替代 CMD echo $MYPATH CMD /usr/local/apache-tomcat-9.0.55/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.55/bin/logs/catalina.out
- 构建镜像
# 构建镜像 # -f 指定使用的Dockerfile文件,-t 指定生成镜像的版本,. 镜像放在当前目录 docker build -t henggao_tomcat .
- 启动容器
# 1. 查看所有镜像 docker images # 2. 运行容器,默认会去找最新版,所以需要指定版本 docker run -d -p 8080:8080 --name henggao_tomcat_demo \ -v /home/tomcat/test:/usr/local/apache-tomcat-9.0.55/webapps/test \ -v /home/tomcat/logs:/usr/local/apache-tomcat-9.0.55/logs \ henggao_tomcat # 3. 进入容器 docker exec -it henggao_tomcat_demo /bin/bash
- 访问测试
curl localhost:8080
3. 发布项目
- 由于做了卷挂载,直接在本地编写项目就可以发布。
3.1 测试
root@docker:/home/tomcat# cd test root@docker:/home/tomcat/test# mkdir WEB-INF root@docker:/home/tomcat/test# ls WEB-INF root@docker:/home/tomcat/test# cd WEB-INF/ root@docker:/home/tomcat/test/WEB-INF# vim web.xml
- 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>
root@docker:/home/tomcat/test/WEB-INF# cd .. root@docker:/home/tomcat/test# vim index.jsp root@docker:/home/tomcat/test#
- index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <body> <h2>Hello World!</h2> </body> </html>