docker 发布tomcat项目_在docker中部署tomcat并且部署java应用程序的步骤详解

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 . (注意这里有个英文的句号);注意,在这个过程中docker需要下载安装的jdk和tomcat程序所以比较忙,可以通过命令:docker image查看下,返回的数据中第一行有个REPOSITORY和TAG都是的数据行,其中的VIRTUAL_SIZE是阶段性变大的,说明是在下载。

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

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

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

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

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

第一步:上一个问题中我们已经知道war包是部署在容器的位置是:/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://www.mzph.cn/news/573555.shtml

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

相关文章

Linux vi 行尾 ctrl,linux中vi使用技巧常用技巧和高级替换

linux中vi使用技巧常用技巧和高级替换模式切换&#xff1a;i&#xff0c;I 进入插入模式&#xff1a;i为从目前光标所在处插入&#xff1b;I为在目前所在列的第一个非空格的字符处开始插入。a&#xff0c;A 进入插入模式&#xff1a;a为从目前光标所在的下一个字符处开始插入…

c# 批量mqtt_C#使用 MQTTnet 快速实现 MQTT 通信(文末有完整Demo下载)

MQTT(一)C#使用 MQTTnet 快速实现 MQTT 通信(文末有完整Demo下载)原创weixin_pwtank1983 发布于2018-02-03 10:22:24 阅读数 36681 收藏展开目录MQTT(一)C#使用 MQTTnet 快速实现 MQTT 通信(文末有完整Demo下载)MQTT(二)在windows64位上安装Python环境MQTT(三)Python客户端net客…

5月16日 AJAX

主页面&#xff1a; <head> <script src"../jquery-2.2.3.min.js"></script> </head><body> <div> <input type"text" id"uid" /><span id"xinxi"></span> </div> </…

linux signal 符号表6,gdb调试信息__000_linux-gnu_00000000_002_rw-p__169IT.COM

很少使用gdb调试&#xff0c;现在用了&#xff0c;又不知道是什么意思&#xff0c;求大侠指教*** glibc detected *** /home/hhbgk/url/url: free(): invalid next size (normal): 0x0809ac30 *** Backtrace: /lib/i386-linux-gnu/libc.so.6(0x6ff22)[0x1a0f22]/lib/i386-linux…

pyecharts查看版本_pyecharts v1 版本 学习笔记 折线图,面积图

折线图折线图 基本demoimport pyecharts.options as optsfrom pyecharts.charts import Linec (Line().add_xaxis(["衬衫", "毛衣", "领带", "裤子", "风衣", "高跟鞋", "袜子"]).add_yaxis(商家A, [1…

【Django】Django Debug Toolbar调试工具配置

正在发愁怎么调试Django&#xff0c;就遇到了Django Debug Toolbar这个利器。 先说遇到的问题&#xff1a; 网上也有教程&#xff0c;不过五花八门的&#xff0c;挨个尝试了一遍&#xff0c;也没有成功运行。最后终于找到问题所在&#xff1a; 从开发服务器日志可知&#xff1a…

单片机c语言模块化实例程序设计,单片机C语言模块化设计

原标题&#xff1a;单片机C语言模块化设计keil中实现 模块化编程.doc在使用 KEIL 的时候,我们习惯上在一个.c 的文件中把自己要写的东西按照自己思路的顺序进行顺序书写。这样是很普遍的写法,当程序比较短的时候比如几十行或者一百多行,是没有什么问题的。但是当程序很长的时候…

python中提取pdf文件某些页_人工智能|Python提取PDF中的文本并朗读

题前的话之前有老师在群里推荐这个&#xff0c;我看了一眼觉得还是蛮有趣的&#xff0c;然后就忘了……昨天又看到这个《宅男福利&#xff01;我50行Python代码让小姐姐给你读Pdf》&#xff0c;今天于是开始自己尝试&#xff0c;谁知道pdfplumber库怎么也安装不了&#xff0c;最…

基于RAF的一个小动画框

RAF也即是requestAnimationFrame&#xff0c;之前的动画都是基于setTimeout写的&#xff0c;所以为了性能方面的考虑&#xff0c;开始使用requestAnimationFrame写动画。 function animation(obj, data) {if (obj.timer) {window.cancelAnimationFrame(obj.timer)}obj.timer w…

c语言定义一个字母的范围,C语言学习知识程序设计试卷及其规范标准答案

C 语言程序设计 笔试试题题号 一 二 三 四 五 六 笔试(70%)综合 (30%)总分分数试卷说明&#xff1a;1. 笔试卷面总分100分&#xff0c;取卷面成绩的70%计入总分&#xff1b;2. 综合成绩为平时成绩(10%)和实验成绩(20%)之和&#xff0c;占总分的30%&#xff1b;3. 答题时禁止拆开…

python执行时间长被kill_用python记录运行pid,并在需要时kill掉它们的实例

我在跑爬虫程序的时候&#xff0c;由于爬虫程序的等待目标服务器返回数据的时间很长&#xff0c;而cpu占用很低&#xff0c;所以经常挂着代理一跑就跑好几百个。但是爬虫程序通常是写了死循环&#xff0c;或直到分配给该进程的任务都跑完才退出的。如果我们想中途结束掉这些任务…

[UVA315]Network(tarjan, 求割点)

题目链接&#xff1a;https://uva.onlinejudge.org/index.php?optioncom_onlinejudge&Itemid8&pageshow_problem&problem251 求割点&#xff0c;除了输入用strtok和sscanf处理输入以外&#xff0c;对于求割点的tarjan算法有了进一步理解。 特别注意88行&#xff0…

pmw调光c语言程序,51单片机led灯渐变PWM调光(渐亮渐灭)C语言和汇编源程序

; PWM 控制 LED 灯渐亮渐灭程序; 适用 ME500 开发系统; 晶振为11.0592M; 利用定时器控制产生占空比可变的 PWM 波; 按K1&#xff0c;PWM值增加&#xff0c;则占空比减小,LED 灯渐暗。; 按K2&#xff0c;PWM值减小&#xff0c;则占空比增加,LED 灯渐亮。; 当PWM值增加到最大值或…

imgaug批量椒盐噪声 python_python手写给图像加椒盐噪声和高斯噪声

此文记录自己在做图像数据增强给图像加噪时遇到的一些情况。椒盐噪音&#xff1a;简单点说就是在图像中随机加一些白点或者黑点。from skimage import ioimport randomimport numpy as npdef salt_and_pepper_noise(img, proportion0.05):noise_img imgheight,width noise_img.…

万年历c语言设计报告,C语言实训题目设计报告 万年历

for(i1;i<startday;i){printf("\t");//把每月1日之前的空格打出来}for(i1;i<monthdays;i){printf("%d\t",i);if(i7*k-startday){printf("\n");k;}}}printf("\n\n");}void nianli(){int i,j,k,startday,monthdays,month,year;sys…

ERROR ITMS-90022,90023,问题已解决

昨天打包上架&#xff0c;在使用Application Loader上传包时出现ERROR ITMS-90022,90023这两个错误&#xff0c;在此记录一下。 ERROR ITMS-90023的错误解决方法比较简单&#xff0c;在Assets.xcassets中的AppIcon里面&#xff0c;将CarPlay内的图片删除即可。 ERROR ITMS-9002…

Gridiew——表的内容居中

添加如下代码&#xff1a;ItemStyle-HorizontalAlign"Center"例子&#xff1a;<asp:BoundField DataField"ID" HeaderText"账号" SortExpression"ID" ItemStyle-HorizontalAlign"Center"/>转载于:https://www.cnblogs…

c语言编程一个象棋游戏,急求:C语言编写的中国象棋游戏一个

急求&#xff1a;C语言编写的中国象棋游戏一个來源:互聯網 2009-09-08 12:30:35 評論分類: 電腦/網絡 >> 程序設計 >> 其他編程語言問題描述:由于学习需要......热烈欢迎个位大侠&#xff0c;高手相助&#xff01;小生在此道谢了&#xff01;&#xff01;&#x…

grunt 前端开发环境搭建

1.找管理员开通gitlab权限 2.下载并安装git工具 3.下载并安装nodejs 4.安装cnpm 5.安装kulor&#xff0d;cli cnpm install -g kulor-cli cnpm install -g grunt-cli cnpm install 6.安装nginx并运行 7.进入到工作目录 运行 grunt 补充如何从远程拉代码&#xff0c;在本地配…

获取referer中的请求参数_Servlet获取AJAX POST请求中参数以form data和request payload形式传输的方法...

本文实例讲述了Servlet获取AJAX POST请求中参数以form data和request payload形式传输的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;HTTP请求中&#xff0c;如果是get请求&#xff0c;那么表单参数以namevalue&name1value1的形式附到url的后面&#xff0c…