1.构建一个Java应用服务,包含两个步骤:
a.一个镜像从URL拉取指定的WAR文件并保存到卷里
b.一个含有Tomcat服务器的镜像运行这些下载的WAR文件

2.构建下载WAR的镜像

FROM centos
MAINTAINER ruthless @qq.com
ENV BUILD_ON --
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 @qq.com ADD ./jdk-7u80-linux-x64.tar.gz /usr/local/
ADD ./apache-tomcat-7.0..tar.gz /usr/local/ #set environment variable
ENV JAVA_HOME /usr/local/jdk1..0_80
ENV PATH $JAVA_HOME/bin:$PATH VOLUME ["/var/lib/tomcat7/webapps/"]
EXPOSE #指定容器启动后执行linux命令
#、把war文件复制到tomcat webapps目录下 、启动tomcat 、打印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 : sample/tomcat
$ docker logs sample_app

6.访问浏览器
http://192.168.1.160:8080/sample

Docker构建Java web应用服务的更多相关文章

  1. docker化java web应用

    一.简介 Docker是一个使用Go语言开发的开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的机器上.Docker的发展速度和火爆程度着实令人惊叹,一 ...

  2. Docker学习笔记三:Docker部署Java web系统

    Docker部署Java Web系统 1.在root目录下创建一个路径test/app mkdir test && cd test&& mkdir app && ...

  3. Gradle构建Java Web应用(转)

    转自:http://www.blogjava.net/jiangshachina/archive/2014/02/03/409285.html 本文是发布在java.net上的一篇摘自于<Gra ...

  4. Gradle构建Java Web应用:Servlet依赖与Tomcat插件(转)

    Gradle的官方tutorial介绍了构建Java Web应用的基本方法.不过在使用Servlet做上传的时候会碰到问题.这里分享下如何通过Servlet上传文件,以及如何使用Gradle来构建相应 ...

  5. 使用Eclipse+Maven+Jetty构建Java Web开发环境(几个教程综合集成2014发行)

    工作需要使用Jetty由于web集装箱,得知Eclipse+Maven+Jetty该组合是非常好的,因此,要在网上找了很多教程,但不写或多或少特定的或过时的内容而导致最终的配置失败,易于配置为未来的同 ...

  6. Docker构建Python Web环境

    出于寻找Docker对Python相关项目部署的学习,找到腾讯课堂NEXT公开课中[Docker构建Python Web环境]的课程,本文对其进行内容梳理及知识点汇总. 该课程总计6小时左右,是个适合 ...

  7. 使用Docker运行Java Web应用

    前言 Tomcat是目前比较流行的Web应用服务器,深受Java爱好者的喜爱.通常J2EE应用的产出物是一个war包,这篇文章将为你介绍如何使用Docker运行Tomcat+war包的Java Web ...

  8. 使用Docker搭建Java Web运行环境

    这周末体验了一下挺火的Docker技术,记录学习笔记. >Docker是干什么的 Docker 是一个基于Linux容器(LXC-linux container)的高级容器引擎,基于go语言开发 ...

  9. Docker搭建Java Web运行环境

    1. 前提条件 安装了Docker的64位Linux 操作系统 Linux操作系统镜像 Linux版本的JDK压缩包 Linux版本的Tomcat压缩包 2. 启动容器 容器是在镜像的基础上来运行的, ...

随机推荐

  1. tween 缓动动画

    在讲tween类之前,不得不提的是贝塞尔曲线了.首先,贝塞尔曲线是指依据四个位置任意的点坐标绘制出的一条光滑曲线.它在作图工具或动画中中运用得比较多,例如PS中的钢笔工具,firework中的画笔等等 ...

  2. WPF图片拖拉变形、合成

    使用WPF的装饰器(Adorner)实现图片拖拉变形,DrawingVisual高保真合成图片.效果如下: 源码:https://gitee.com/orchis/ImageFotoMix.git

  3. Java多线程系列3 synchronized 关键词

    先来看一个线程安全的例子 ,两个线程对count进行累加,共累加10万次. public class AddTest { public static void main(String[] args) ...

  4. MYSQL 开发总结

    1.mysql中,VARCHAR(N)中的N代表的是字符数,而不是字节数.例如VARCHAR(255)表示可以保存255的中文 2.过大的长度会消耗更多的内存.VARCHAR(N),存储时是按照数据实 ...

  5. ABP框架系列之二十二:(Dynamic-Web-API-动态WebApi)

    Building Dynamic Web API Controllers This document is for ASP.NET Web API. If you're interested in A ...

  6. python中,类方法和静态方法区别。

    面相对象程序设计中,类方法和静态方法是经常用到的两个术语. 逻辑上讲:类方法是只能由类名调用:静态方法可以由类名或对象名进行调用. 在C++中,静态方法与类方法逻辑上是等价的,只有一个概念,不会混淆. ...

  7. 20155326《网络攻防》Exp4 恶意代码分析

    20155326<网络攻防>Exp4 恶意代码分析 基础问题回答: 1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪 ...

  8. Mac 下 软件安装路径查看 命令: Which, 估计Linux 也是

    ✘ marikobayashi@juk  ~  which git /usr/bin/git marikobayashi@juk  ~  which maven maven not found ...

  9. Dev修改gridview 背景色

    private void gridView1_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventA ...

  10. 一个简单的将Markdown二级标题进行排序的脚本

    我在写博客<Linux的1000个命令>的时候,相对二级标题进行一下排序,方便阅读和查找,于是就有了这个小程序. #! /usr/bin/env python3 import os imp ...