如果在docker中部署tomcat,并且部署java应用程序

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

如果在docker中部署tomcat,并且部署java应用程序 博客分类: docker

1、先说如何在docker中部署tomcat

    第一步:root用户登录在系统根目录下创建文件夹tomcat7,命令如:mkdir tomcat7,并且切换到该目录下:cd tomcat7;

    第二步:创建Dockerfile,命令如:touch Dockerfile;

    第三步:编写Dockerfile,命令如:vim Dockerfile,完成以下命令编写:

                    FROM ubuntu:14.04
                    MAINTAINER zhaichong <344616313@qq.com>
                    ENV REFRESHED_AT 2015-7-28

                    RUN apt-get -yqq update
                    RUN apt-get -yqq install tomcat7 default-jdk

                    ENV CATALINA_HOME /usr/share/tomcat7
                    ENV CATALINA_BASE /var/lib/tomcat7
                    ENV CATALINA_PID  /var/run/tomcat7.pid
                    ENV CATALINA_SH   /usr/share/tomcat7/bin/catalina.sh
                    ENV CATALINA_TMPDIR /tmp/tomcat7-tomcat7-tmp

                    RUN mkdir -p $CATALINA_TMPDIR

                    VOLUME ["/var/lib/tomcat7/webapps/"]

                    EXPOSE 8080 9000

                    ENTRYPOINT ["/usr/share/tomcat7/bin/catalina.sh", "run" ]

                    说明:这里的EXPOSE要把程序中需要使用到的端口都要暴露出去。根据环境变量CATALINA_BASE可以知道VOLUME指定的目录就是tomcat部署war包的目录。

      第四步:生成镜像,命令如:docker build -t test:test_app -f /soft/docker/Dockerfile /root

注意,在这个过程中docker需要下载安装的jdk和tomcat程序所以比较忙,可以通过命令:docker image查看下,返回的数据中第一行有个REPOSITORY和TAG都是<none>的数据行,其中的VIRTUAL_SIZE是阶段性变大的,说明是在下载。

      第五步:运行镜像生成容器,命令如:docker run  --name test_app -d -p 8080:8080 -p 9000:9000 镜像id,如果不知道镜像id是多少就使用命令:docker images查看下,注意这里把EXPOSE出来的端口和宿主主机的端口绑定起来了,以后就可以使用宿主主机的IP地址和这个端口来访问docker容器中的tomcat以及其中的应用程序了。

      第六步:测试:在浏览器地址栏敲:http://宿主主机ip:8080/,好了成功了。

      可以使用命令:docker port 容器id 8080,这个命令查看容器的8080端口和宿主主机端口之间的映射关系,而已看出来现在容器的8080端口映射的是宿主主机的8080端口。

 

2、再说如何部署我们的应用程序到docker容器的tomcat里?

      大家知道tomcat在容器中,如果要像在宿主主机上那样部署tomcat应用程序肯定是不行的。那么采用什么办法呢?

      第一步:上一个问题中我们已经知道war包是部署在容器的位置

docker inspect --format='{{ .Config.Volumes}}'  id

 

是:/var/lib/tomcat7/webapps/,那么这个位置到底在什么地方?使用命令:docker inspect -f "{{.Volumes}}" 容器id,如果不知道容器id,则可以通过:docker ps的方式查看到所有运行的容器,也可以通过docker ps -a的方式查看所有容器,包括运行的和不运行的。

      会得出以下的结果:

      map[/var/lib/tomcat7/webapps:/var/lib/docker/vfs/dir/28d6dd0455d92f0160288a56f838d8aeeff402a843bd57d3b21fcd80eac7df02],在这个map的中括号里,冒号前边的是容器中的目录,冒号后边的对应的宿主主机中的目录,所以我们只需要把我们的war包拷贝到这个地方然后重启tomcat即可。

      这里要注意,由于我们上边写的Dockerfile中默认容器启动时是会启动tomcat的,所以这里只需要重启容器就能让tomcat把我们的容器加载上,命令如:

      docker restart 容器id

3、如果要看成tomcat的日志呢?比如查看启动时的日志,则可以使用命令:

       docker logs 容器id,如果要持续观察日志,则是:docker logs -f 容器id,这个时候日志是从头开时读的,如果日志很长会刷屏很久,如果只打算看最新的日志可以采用以下的方式:docker logs --tail 0 -f  容器id

      注意,有的时候我们想在执行docker run命令的时候才指定映射的Volumes,则可以使用如下命令:

docker run --name gboat2_ca -d -p 8080:8080 -p 9000:9000 --link db001:db_ca -v /home/webapp/ca:/var/lib/tomcat7/webapps/ 64de1445c34c,这里一定要注意的是最后的英文冒号前边是宿主主机的文件夹路径,冒号后边是容器中的路径。

 

 

http://blog.csdn.net/achilles12345/article/details/47159043

 

http://blog.csdn.net/rznice/article/details/52211620

 

 

 

复制代码

4、启动容器(挂载),将software文件夹下的项目同步到tomcat镜像中并进入到该镜像中(其中镜像ID是上一步中查找到的tomcat镜像ID)

 

复制代码
docker run -i -t -v /root/software/:/mnt/software/ 镜像ID /bin/bash docker run --name app -d -p 8080:8080 -p 9000:9000 -v /root/web/:/var/lib/tomcat7/webapps/ cf31e0583f61

 

转载于:https://my.oschina.net/xiaominmin/blog/1598875

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/453192.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot结合thymeleaf

之前在Eclipse里写了个Spring Boot响应jsp的小demo&#xff0c;后来发现打成jar包导出之后找不到jsp文件了。经过在网上查阅信息与资料&#xff0c;发现Spring Boot对于jsp的支持其实是不好的&#xff0c;而且在一些书中和官方都明确表示没有办法支持在jar包中打入jsp文件。虽然…

视觉测量简介

1.1 视觉测量技术 1.1.1 现代检测技术的发展趋势 检测技术是现代化工业的基础技术之一&#xff0c;是保证产品质量的关键。在现代化的大生产之中&#xff0c;涉及到各种各样的检测。随着工业制造技术和加工工艺的提高和改进&#xff0c;对检测手段、检测速度和精度提出了更…

高并发系统之降级特技

2019独角兽企业重金招聘Python工程师标准>>> 高并发系统之降级特技 博客分类&#xff1a; 架构 在开发高并发系统时有三把利器用来保护系统&#xff1a;缓存、降级和限流。之前已经有一些文章介绍过缓存和限流了。本文将详细聊聊降级。当访问量剧增、服务出现问题&a…

freeradius 3.0 时间限制_创意营销3.0新模式下,易企秀要成为中国的Adobe

近几年&#xff0c;随着大数据和人工智能技术的发展&#xff0c;智能化、程序化营销在国内获得高速发展。从以创意内容、提升效率的工具到现在驱动企业数字化转型的智能营销&#xff0c;营销云在国内的热度与成熟度不断提升。营销云起源于“Enterprise Marketing Software Suit…

抢占式和非抢占式的进程调度

非抢占式&#xff08;Nonpreemptive&#xff09; 让进程运行直到结束或阻塞的调度方式 容易实现 适合专用系统&#xff0c;不适合通用系统 抢占式&#xff08;Preemptive&#xff09; 允许将逻辑上可继续运行的在运行过程暂停的调度方式 可防止单一进程长时间独占…

图形学基础知识

本篇主要给大家介绍图形学基础知识&#xff0c;了解Unity图像渲染机制&#xff0c;以及图像渲染管线流程。 主要是因为伴随着VR/AR的飞速发展&#xff0c;为了满足VR高清高帧率的极限渲染&#xff0c;着色器编程&#xff08;Shader&#xff09;也成为了Unity程序开发人员的必备…

调度队列模型

调度队列模型及准则 1 仅有进程调度的调度队列模型&#xff1a; 每个进程在执行时都可能出现以下三种情况&#xff1a; (1) 任务在给定的时间片内已经完成&#xff0c;该进程便在释放处理机后进入完成状态 (2) 任务在本次分得的时间片内尚未完成&#xff0c;OS便将该任务再放入…

数据库相关整理

一、MySQL 1、mysql如何做分页 mysql数据库做分页用limit关键字&#xff0c;它后面跟两个参数startIndex和pageSize 2、mysql引擎有哪些&#xff0c;各自的特点是什么&#xff1f; http://www.cnblogs.com/ctztake/p/8453990.html 3、数据库怎么建立索引 create index account_…

api接口怎么对接_系统对接项目管理方面怎么做?从一次项目接口对接说起

故事&#xff1a;最近业务方有一个新的业务合作模式&#xff0c;需要与第三方公司进行系统的对接&#xff0c;原本预期2周可以完成的项目&#xff0c;最后要用到3周时间才能完成&#xff0c;出现的现象其实还挺典型的&#xff0c;也不是没遇到过&#xff0c;因为自己这边的进度…

周转时间 平均周转时间 带权周转时间 平均带权周转时间

1.周转时间 2.平均周转时间 平均周转时间是对n个而言的 3.带权周转时间 真正的运行时间指的是进程占有处理机的时间 4.平均带权周转时间 即n个平均的带权周转时间

unity应用开发实战案例_「简历」STAR法则的实战应用,附手把手教学案例

关注应届生求职网&#xff0c;了解更多求职信息本文共2072字&#xff0c;预计阅读需3分钟本期分享导师-Anna_青云导师51Job职场导师知乎职场千赞答主多年猎头及多行业人力资源管理经历职业生涯规划师、职业生涯咨询师、心理咨询师终身学习践行者、斜杠青年、职场教练在简历优化…

SOA架构设计经验分享—架构、职责、数据一致性

1.背景介绍2.SOA的架构层次 2.1.应用服务&#xff08;原子服务&#xff09;2.2.组合服务2.3.业务服务&#xff08;编排服务&#xff09;3.SOA化的重构 3.1.保留服务空间&#xff0c;为了将来服务的组合4.运用DDDGRASP进行分析和设计&#xff08;防止主观的判断导致错误的假设&a…

计算机设备没有音频,电脑没有音频设备怎么办

有些朋友的的电脑没有声音&#xff0c;任务栏右下角也没有小喇叭声音图标&#xff0c;进入到控制面板里面的声音选项里面去设置&#xff0c;在“音量”项目中显示“没有音频设备”&#xff0c;很多朋友遇到这种情况不知道应该怎么解决&#xff0c;今天笔者就电脑没有音频设备怎…

全志科技公司A83T Qt 支持双屏显示

目前A83T支持单屏显示&#xff0c;首屏为LCD或者首屏为hdmi&#xff0c;都使用无论使用SCREEN0还是SCREEN1都是使用FB0作为framebuffer&#xff0c;在android下可以实现LCD和HDMI同样屏幕显示&#xff0c;而我们需要LCD和HDMI分别显示。FrameBuffer采用的是linux下的framebuffe…

明日之后怎么跳过实名认证_明日之后宝箱达人活动怎么玩 明日之后宝箱达人可以开箱多少次...

《明日之后》宝箱达人是今天游戏中更新的活动&#xff0c;玩家们在部分的野外地图中可以找到宝箱。很多玩家都想知道这个宝箱获得的奖励是什么。接下来就让小编给大家带来明日之后宝箱达人活动奖励介绍&#xff0c;一起来看看吧。明日之后宝箱达人活动介绍 一、活动时间2020年9…

JVM内存模型与垃圾回收GC

Java开发有个很基础的问题&#xff0c;虽然我们平时接触的不多&#xff0c;但是了解它却成为Java开发的必备基础——这就是JVM。在C中我们需要手动申请内存然后释放内存&#xff0c;否则就会出现对象已经不再使用内存却仍被占用的情况。在Java中JVM内置了垃圾回收的机制&#x…

伤疤好了有黑印怎么办_春藤家长圈|家有二孩,老大老二一起抢东西,家长该怎么办?...

本期主讲&#xff1a;齐静美国G.T.I.认证父母效能训练师高级家庭教育指导师未来春藤家长学院特聘讲师(西安)五年一线幼儿教学从业经验两个孩子的妈妈每周一次的春藤家长圈线上案例分享时间到啦&#xff01;本周是我们线上案例分享的第十四期&#xff01;本周案例&#xff1a;本…

Java_方法

方法就是将一段代码封装在一个结构体中&#xff0c;并且可反复调用 方法的定义&#xff1a; public static 返回值类型 方法名称 &#xff08;[参数类型 变量&#xff0c; 参数类型 变量&#xff0c;参数类型 变量...]&#xff09;{ 方法中包含的代码&#xff1b; [return 返回…

不懂卷积神经网络?别怕,看完这几张萌图你就明白了

本文来自AI新媒体量子位&#xff08;QbitAI&#xff09;这篇文章用最简明易懂的方式解释了卷积神经网络&#xff08;CNN&#xff09;的基本原理&#xff0c;并绕开了里面的数学理论。 同时&#xff0c;如果想对从头开始构建CNN网络之类的问题感兴趣&#xff0c;作者推荐去读《 …