我们都知道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/
  2. 使用浏览器访问http://ip:8080/

当你见到熟悉的汤姆猫的时候,就证明你构建成功了。

部署war包

  1. war包上传到与Dockerfile文件同一目录(即tomcat)
    我使用的是WinSCP,个人觉得好用到不行=。=
  2. 重新编写Dockerfile:

    $ vi Dockerfile
  3. 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执行程序
    
    

      

  4. 运行结果

0x04 其他配置文件

应用场景

由于一些项目需要修改tomcat的context.xml,setting.xml,tomcat-user.xml等,还有一些tomcat的lib包,甚至是添加一些独有的授权文件,那么也应该在dockerfileadd进去,而不是直接放到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"]

  

如何使用Dockerfile构建Tomcat镜像并部署war的更多相关文章

  1. dockerfile构建Tomcat镜像

    dockerfile构建Tomcat镜像 一.镜像分层概念 二.制作tomcat镜像 2.1.创建分层目录 [root@node2 ~]# mkdir /app/{web/{nginx,tomcat, ...

  2. Docker 使用Dockerfile构建tomcat镜像

    Dockerfile概念: 镜像的定制实际上就是定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,用这个脚本来构建.定制镜像,那么之前提及的无法重复的问题. ...

  3. 以tomcat镜像为基础部署war包后再做成镜像

    #以交互的方式启动本地的镜像tomcat:hps,并且将本地目录/mnt/iso挂在到容器中的/tmp/repositories目录,方便从本地获取一些安装文件并进行一些操作 docker run - ...

  4. 用Docker构建Tomcat镜像

    构建tomcat镜像 创建工作目录 [root@elk-node2 tomcat]# mkdir tomcat [root@elk-node2 tomcat]# cd tomcat [root@elk ...

  5. Dockerfile构建私有镜像

    构建第一个镜像 镜像的定制实际上就是定制每一层所添加的配置,文件.我们可以把每一层修改,安装,构建,操作的命令都写入一个脚本,这个脚本就是Dockerfile.Dockerfile是一个文本文件,其内 ...

  6. Docker 02 - 向 Docker 的 Tomcat 镜像中部署 Web 应用

    目录 1 下载 Docker 镜像 2 部署Web项目 2.1 通过Dockerfile自定义项目镜像 2.2 启动自定义镜像, 生成一个容器 2.3 另一种启动方式: 交互式启动 3 (附) 向镜像 ...

  7. Dockerfile构建jar镜像

    dockerDockerfilejar包docker-compose 一.安装docker和compose 二.准备jar包 三.编写配置文件 1. Dockerfile 2. docker-comp ...

  8. Docker学习(六)Dockerfile构建自定义镜像

    Docker学习(六)Dockerfile构建自定义镜像 前言 通过前面一篇文章可以知道怎么去使用一个镜像搭建服务,但是,如何构造自己的一个镜像呢,docker提供了dockerfile可以让我们自己 ...

  9. 基于Dockerfile制作tomcat镜像

    Docker 概述:   在前面的例子中,我们从下载镜像,启动容器,在容器中输入命令来运行程序,这些命令都是手工一条条往里输入的,无法重复利用,而且效率很低.所以就需要一种文件或脚本,我们把想执行的操 ...

随机推荐

  1. [翻译] Haneke(处理图片缓存问题)

    Haneke https://github.com/hpique/Haneke A lightweight zero-config image cache for iOS. 轻量级0配置图片缓存. H ...

  2. jQueryEasyUI创建菜单主页

    function addTab(title,path){ funcTab.tabs('add',{ title: title, fit:true, href:'${ctx}/login/forword ...

  3. Android之从Browser中打开本地的应用程序&微信检测是否有对应app

    在对应的应用程序的AndroidManifest.xml中配置: <activity android:name=".ui.TabHostActivity" android:w ...

  4. [Git] 技术的热门度曲线

    reference :http://www.ruanyifeng.com/blog/2017/03/gartner-hype-cycle.html reference : https://stateo ...

  5. [转]C++之运算符重载(2)

    上一节主要讲解了C++里运算符重载函数,在看了单目运算符(++)重载的示例后,也许有些朋友会问这样的问题.++自增运算符在C或C++中既可以放在操作数之前,也可以放在操作数之后,但是前置和后置的作用又 ...

  6. Common Internet File System

    CIFS (Common Internet File System) is a protocol that gained popularity around the year 2000, as ven ...

  7. Informatica 常用组件Lookup之十 创建查找转换

    在 Mapping Designer 中选择"转换-创建".选择查找转换.输入转换名称.查找转换的命名惯例是 LKP_TransformationName.单击"确定&q ...

  8. Spring boot基础:配置文件配置变量、多环境的配置

    一.配置 resources下面application.properties 1.普通配置 resources下面application.properties,比如写上:server.port=909 ...

  9. 【Other】希腊诸神大全-中英文名称

    希腊诸神大全-中英文名称 希腊诸神的名字_百度搜索 希腊诸神_百度百科 希腊神话人物名字大全_极客百科 希腊神话人物名称大全 希腊神话中的人物名称大全   希腊神话即口头或文字上一切有关古希腊人的神. ...

  10. VS2010 配置PCL1.6.0AII in one 无法启动程序ALL_BUILD

    无法启动程序D:\build\debug\ALL_BUILD 系统找不到指定文件 解决办法:将project_inliers工程设置为启动项目    找到项目右击--设为启动项目. 将project_ ...