如何使用Dockerfile构建Tomcat镜像并部署war

简介: 7月更文挑战第14天

我们都知道Docker构建一个镜像有两种方式:
使用docker commit命令
使用Dockerfile文件和docker build命令那么这两种方式有何区别呢?
相同点:底层实现上一样,最终都是通过docker commit生成镜像;
不同点:通过Dockerfile生成镜像,能够实现镜像文档化,使得镜像可读且易维护;
通过docker build生成镜像则相反,不能实现镜像文档化。所以这篇文章采用Dockerfile来构建 :D
0x02准备工作
创建目录
$ mkdir tomcat && cd tomcat # 创建一个目录来存放所需文件$ touch Dockerfile && vi Dockerfile # 编写Dockefile
Dockerfile (Tomcat其他版本)
FROM tomcat:7-jre7 # tomcat7 + jre 7
MAINTAINER "errorlife steffan.fan@foxmail.com" # 维护者
CMD ["catalina.sh", "run"] #启动tomcat shell执行程序0x03 构建镜像
构建镜像
$ sudo docker build -t errorlife/tomcat .

"-t",--tag,为当前镜像命名:errorlife/tomcat

".", 指代当前目录运行镜像

$ sudo docker run -d -p 8080:8080 errorlife/tomcat

-d,--detach=false 指定容器运行于前台还是后台(-d即后台)

"-p",--port,指定宿主机的8080端口绑定到镜像暴露的8080端口运行结果

  1. 你可以使用​​curl​​命令确定是否正确部署成功
    $ curl http://docker.steffan.cn:8080/1. 使用浏览器访问http://ip:8080/
    当你见到熟悉的汤姆猫的时候,就证明你构建成功了。
    部署war包
  2. 将war包上传到与​​Dockerfile​​文件同一目录(即tomcat) 我使用的是WinSCP,个人觉得好用到不行=。=
  3. 重新编写Dockerfile:
    $ vi Dockerfile1. Dockerfile:
    FROM tomcat:7-jre7
    MAINTAINER "errorlife steffan.fan@foxmail.com"
    ADD dockertest.war /usr/local/tomcat/webapps/ #将war包添加进webapps中
    CMD ["catalina.sh", "run"] #启动tomcat shell执行程序1. 运行结果
    0x04 其他配置文件
    应用场景
    由于一些项目需要修改tomcat的​​context.xml​​​,​​setting.xml​​​,​​tomcat-user.xml​​​等,还有一些​​tomcat的lib包​​​,甚至是添加一些独有的​​授权文件​​​,那么也应该在​​dockerfile​​​中​​add​​​进去,而不是直接放到​​Linux​​的文件管理系统中。
    Show一下我的Dockerfile
    FROM tomcat:7-jre7
    MAINTAINER "errorlife steffan.fan@foxmail.com"

ADD settings.xml /usr/local/tomcat/conf/
ADD tomcat-users.xml /usr/local/tomcat/conf/
ADD config/license.xml

ADD classes12.jar /usr/local/tomcat/lib
ADD ojdbc6.jar /usr/local/tomcat/lib
ADD oracle-jdbc-10.2.jar /usr/local/tomcat/lib
ADD context.xml /usr/local/tomcat/conf/
ADD xxx.war /usr/local/tomcat/webapps/
CMD ["catalina.sh", "run"]结论:docker会将这些文件添加到tomcat镜像内部的路径

相关文章
|
应用服务中间件 容器
从零手写实现 tomcat-07-war 如何解析处理三方的 war 包?
这是一个关于构建Web应用和理解类加载器的文章摘要。作者探讨了如何解析和处理WAR包,使用Netty权威指南系列(BIO, NIO, AIO)作为背景阅读。文章通过一个简单的Web项目实例,展示了项目的目录结构,包括`pom.xml`, `web.xml`和`IndexServlet`。作者还介绍了自定义的`WebAppClassLoader`,它扩展了`URLClassLoader`,用于根据类路径加载非当前项目类。最后提到了一个名为mini-cat的开源项目,它是简易版Tomcat实现,可在GitHub上找到。
|
Ubuntu 前端开发 JavaScript
技术笔记:Ubuntu:一个部署好的tomcat应用(war包)怎么用Nginx实现动静分离?
技术笔记:Ubuntu:一个部署好的tomcat应用(war包)怎么用Nginx实现动静分离?
|
前端开发 Java 应用服务中间件
架构篇:Tomcat 高层组件构建一个商业帝国
架构篇:Tomcat 高层组件构建一个商业帝国
501 6
|
存储 Java 应用服务中间件
Springboot项目打war包部署到外置tomcat容器【详解版】
该文介绍了将Spring Boot应用改为war包并在外部Tomcat中部署的步骤:1) 修改pom.xml打包方式为war;2) 排除内置Tomcat依赖;3) 创建`ServletInitializer`类继承`SpringBootServletInitializer`;4) build部分需指定`finalName`;5) 使用`mvn clean package`打包,将war包放入外部Tomcat的webapps目录,通过startup脚本启动Tomcat并访问应用。注意,应用访问路径和静态资源引用需包含war包名。
1571 0
|
负载均衡 Java 应用服务中间件
部署Tomcat及其负载均衡
部署Tomcat及其负载均衡
361 0
|
负载均衡 架构师 Java
Linux-部署Tomcat及其负载均衡
Linux-部署Tomcat及其负载均衡
383 0
|
负载均衡 网络协议 Java
部署Tomcat负载均衡
Tomcat介绍 Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
313 0
部署Tomcat负载均衡
|
网络协议 Java 应用服务中间件
框架源码私享笔记(01)Tomcat核心架构功能 | 配置详解
本文首先分享了《活出意义来》一书序言中的感悟,强调成功如同幸福,不是刻意追求就能得到,而是全心投入时的副产品。接着探讨了Tomcat的核心功能与架构解析,包括网络连接器(Connector)和Servlet容器(Container),并介绍了其处理HTTP请求的工作流程。文章还详细解释了Tomcat的server.xml配置文件,涵盖了从顶级容器Server到子组件Connector、Engine、Host、Context等的配置参数及作用,帮助读者理解Tomcat的内部机制和配置方法。
|
8月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
1519 5