Docker构建Java web应用服务
1.构建一个Java应用服务,包含两个步骤:
a.一个镜像从URL拉取指定的WAR文件并保存到卷里
b.一个含有Tomcat服务器的镜像运行这些下载的WAR文件
2.构建下载WAR的镜像
FROM centos MAINTAINER ruthless 416501600@qq.com ENV BUILD_ON 2018-04-12 RUN yum install wget -qqy ##是否确认,默认为yes VOLUME ["/var/lib/tomcat7/webapps"] ##war存放目录 WORKDIR /var/lib/tomcat7/webapps/ ENTRYPOINT ["wget"] CMD ["-?"]
$ docker build -t sample/war . ##构建war镜像
通过 WORKDIR 指定工作目录为/var/lib/tomcat7/webapps,因为通过指定了VOLUME卷,因此wget命令会把war包下载到指定的卷目录里面。
3.指定url下载war包,运行容器
$ docker run -it --name sample_war sample/war https://tomcat.apache.org/tomcat-7.0-doc/appdev/sample/sample.war
可以看到,容器通过提供的URL下载了war包,最终保存到/var/lib/tomcat7/webapps目录中。可以在/var/lib/docker目录中找到这个war文件
$ docker inspect -f "{{range.Mounts}}{{.}}{{end}}" sample_war ##用于查看卷的存储位置。 $ ll /var/lib/docker/volumes/787dd4200ae0c621b78640e1ad1a096628c39d21537e5151ca4da259e6ab9873/_data
4.构建tomcat应用服务器
FROM centos MAINTAINER ruthless 416501600@qq.com ADD ./jdk-7u80-linux-x64.tar.gz /usr/local/ ADD ./apache-tomcat-7.0.73.tar.gz /usr/local/ #set environment variable ENV JAVA_HOME /usr/local/jdk1.7.0_80 ENV PATH $JAVA_HOME/bin:$PATH VOLUME ["/var/lib/tomcat7/webapps/"] EXPOSE 8080 #指定容器启动后执行linux命令 #1、把war文件复制到tomcat webapps目录下 2、启动tomcat 3、打印tomcat日志
#2、执行多个命令记得写成一行,别换行否则会报错 ENTRYPOINT cp /var/lib/tomcat7/webapps/* /usr/local/apache-tomcat-7.0.73/webapps/ && /usr/local/apache-tomcat-7.0.73/bin/startup.sh && tail -f /usr/local/apache-tomcat-7.0.73/logs/catalina.out
jdk-7u80-linux-x64.tar.gz、apache-tomcat-7.0.73.tar.gz跟Dockerfile放在同一目录。
使用 ADD 命令增加jdk,默认会解压,使用ENV命令增加java的环境变量。
VOLUME增加/var/lib/tomcat/webapps数据卷,EXPOSE命令对外开放8080端口,ENTRYPOINT指定容器启动后执行的命令,运行tomcat服务器。
$ docker build -t sample/tomcat . ##构建tomcat镜像
$ docker images
5.运行WAR文件
启动一个tomcat实例
$ docker run -d --name sample_app --volumes-from sample_war -p 8080:8080 sample/tomcat $ docker logs sample_app
分类:
Docker系列教程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
2011-04-13 oracle索引浅谈
2011-04-13 ORACLE多表查询优化
2011-04-13 oracle 查找或删除重复记录的语句
2011-04-13 oracle多表联合查询,统计查询,组函数,order by,having,子查询,集合运算