docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > Dockerfile制作Tomcat镜像

Dockerfile制作Tomcat镜像方式

作者:returnthem

这篇文章主要介绍了Dockerfile制作Tomcat镜像方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

一、前置准备

下载所需安装包(放到 Dockerfile 同目录):

目录结构示例:

/docker-tomcat/
├── Dockerfile       # 下面要写的构建文件
├── jdk-8u121-linux-x64.tar.gz   # JDK安装包
└── apache-tomcat-9.0.115.tar.gz  # Tomcat安装包

二、完整 Dockerfile(Tomcat 9 + JDK 8)

FROM centos:7.9.2009

LABEL author="gaoyu" version="1.0" description="CentOS7 + JDK8 + Tomcat9.0.115"

# CentOS 7 yum源
RUN mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak && \
    curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo && \
    yum clean all && yum makecache && \
    yum -y install vim && yum clean all && rm -rf /var/cache/yum/*

# 复制/解压文件
COPY readme.txt /usr/local/readme.txt
ADD jdk-8u121-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.115.tar.gz /usr/local/

# 配置环境变量
ENV MYPATH /usr/local
WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_121
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.115
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.115
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

# 给Tomcat脚本加执行权限
RUN chmod +x $CATALINA_HOME/bin/*.sh

EXPOSE 8080
CMD ["catalina.sh", "run"]

关键说明

三、构建 Tomcat 镜像

1. 进入 Dockerfile 所在目录

cd /docker-tomcat

2. 执行构建命令

# 格式:docker build -t 镜像名:版本 .
docker build -t mytomcat:1.0 .

3. 验证镜像是否构建成功

docker images | grep mytomcat

输出类似以下内容即成功:

mytomcat   9.0    xxxxxxxx    2 minutes ago   890MB

四、运行 Tomcat 容器

1. 基础运行(端口映射 + 后台运行)

docker run -d -p 9090:8080 --name gaoyutomcat \
  -v /home/gaoyu/build/tomcat/test:/usr/local/apache-tomcat-9.0.115/webapps/test \
  -v /home/gaoyu/build/tomcat/tomcatlogs/:/usr/local/apache-tomcat-9.0.115/logs \
  mytomcat:1.0

2. 进阶运行(挂载项目 + 数据持久化)

如果要部署自己的 WAR 包,可挂载宿主机目录到容器:

# 宿主机创建webapps目录,放入自己的WAR包(如demo.war)
mkdir -p /home/tomcat/webapps

# 运行容器,挂载webapps目录
docker run -d -p 8080:8080 \
  -v /home/tomcat/webapps:/usr/local/tomcat9/webapps \
  --name tomcat01 \
  mytomcat:9.0

五、验证 Tomcat 是否正常运行

1. 查看容器状态

docker ps | grep tomcat01

状态为 Up 表示运行正常。

2. 访问 Tomcat 页面

打开浏览器,访问 http://宿主机IP:8080

3. 查看 Tomcat 日志(排查问题)

docker logs tomcat01

若启动失败,日志会提示具体原因(如 JDK 路径错误、端口被占用)。

六、避坑指南

  1. JDK/Tomcat 包名错误:Dockerfile 中的 jdk-8u381-linux-x64.tar.gz 要和实际下载的包名完全一致,否则会报「文件找不到」;
  2. 容器启动后立即退出:必须用 catalina.sh run 前台启动,不能用 startup.sh(后台启动会导致容器主进程退出);
  3. 端口被占用:若宿主机 8080 被占用,运行时改端口(如 -p 8081:8080);
  4. 权限问题:启动脚本无执行权限时,加 chmod +x $CATALINA_HOME/bin/*.sh 解决。

七、发布项目

由于做了卷挂载,只需要直接在本地编写项目就可以直接发布了

[root@localhost docker-tomcat]# cd ../
[root@localhost gaoyu]# ls
build  docker-tomcat
[root@localhost gaoyu]# cd build
[root@localhost build]# ls
tomcat
[root@localhost build]# cd ./tomcat
[root@localhost tomcat]# ls
test  tmcatlogs  tomcatlogs
[root@localhost tomcat]# cd ./test
[root@localhost test]# pwd
/home/gaoyu/build/tomcat/test
[root@localhost test]# mkdir WEB-INF
[root@localhost test]# ls
WEB-INF
[root@localhost test]# cd WEB-INF
[root@localhost WEB-INF]# vim web.xml
[root@localhost WEB-INF]# cd ..
[root@localhost test]# ls
WEB-INF
[root@localhost test]# vim index.jsp

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文