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

这里一定要注意的是最后的英文冒号前边是宿主主机的文件夹路径,冒号后边是容器中的路径。

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

  1. java none怎么用tomcat_在docker中部署tomcat并且部署java应用程序的步骤详解

    先给大家简单说下Docker的概念 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是 ...

  2. python跨函数调用变量_对python中不同模块(函数、类、变量)的调用详解

    首先,先介绍两种引入模块的方法. 法一:将整个文件引入 import 文件名 文件名.函数名( ) / 文件名.类名 通过这个方法可以运行另外一个文件里的函数 法二:只引入某个文件中一个类/函数/变量 ...

  3. hp打印机没有右键扫描_安装HP打印机报错 0x000006be解决方法,图文操作步骤详解...

    安装HP打印机报错 0x000006be解决方法,图文操作步骤详解 1. 首先打开控制面板 2.在程序和功能窗口中找是否有HP的打印机驱动,卸载掉 3.打开C:WindowsSystem32spool ...

  4. 怎么在手机上取消双重认证_用手机在淘宝上怎么开网店?流程步骤详解

       这是一篇关于"用手机在淘宝上怎么开网店?流程步骤详解"的文章: 开网店因为门槛低.收益大,成为众多年轻人创业的首选.很多新手朋友们都想开一家属于自己的网店,但是苦于没有经验, ...

  5. IDEA中Git的配置及其使用(图文结合,步骤详解)

    前言 项目管理离不开版本控制,目前主流版本控制工具大概就是SVN和Git,至于两者有啥区别这里就不详细介绍了,如果有不明白的可以上网查资料,而且现在市场上Git的使用率已经远远高于SVN.我们在用ID ...

  6. u盘锁电脑_如何给u盘设置密码 给u盘设置密码方法【步骤详解】

    u盘是强大的数据资料存储工具,为了安全性,可以给u盘设置密码,这样u盘插入电脑后需要正确输入才能启用,下面来看看u盘怎么设置密码. 1.将u盘插入电脑usb接口,找到u盘盘符并右键点击该u盘,点击启用 ...

  7. 如何关闭访达窗口_如何取消u盘密码 取消u盘密码方法【步骤详解】

    u盘加密后,每次将u盘插入电脑都要解密才能打开u盘.这样就比较麻烦了,如果觉得对u盘里面数据不必执行安全防护问题,那可以取消u盘密码,下面来看看如何取消u盘密码. 1.打开控制面板,修改查看方式为大图 ...

  8. vue中如何调用ios摄像头_vue2.0调用摄像头步骤详解

    这次给大家带来vue2.0调用摄像头步骤详解,使用vue2.0调用摄像头的注意事项有哪些,下面就是实战案例,一起来看一下. 可以在github 上下载demo链接 vue组件代码 import {Ex ...

  9. 如何使用Docker发布SpringBoot项目

    1.目标 Dockerfile文件用来构建Docker镜像,它由一系列命令和参数构成,接下来演示一下如何使用Docker发布SpringBoot项目. 2.准备 a.SpringBoot项目 该项目名 ...

最新文章

  1. 对象拷贝类PropertyUtils,BeanUtils,BeanCopier的技术沉淀
  2. BCH扩容的摩尔定律——为什么BCH目前不选择分片?
  3. 虚拟机vmware11装Mac ox 10.8 解决windows8.1下unlocker202 vmxsmc.exe已停止工作的问题
  4. “工业互联网平台“将成为工业制造企业的标配
  5. 关于 IdentityServer4 中的 Jwt Token 与 Reference Token
  6. C#窗体控件-列表框控件ListBox
  7. python网络编程相关
  8. Pollard rho整数分解法
  9. Lost connection to the debugger on
  10. android计算器开源小项目代码(附安装包.apk)
  11. iPhone/iPad屏幕投屏镜像到PC或Mac上面教程分享
  12. 驱动中实现模拟键盘按键
  13. php模板引擎 smarty笔记
  14. python爬虫之类的方法爬取一部小说
  15. 软硬件测试(EVEREST Home+EVEREST Professional) 汉化版
  16. 几个好玩的区块链app推荐
  17. 百家讲坛 大秦崛起(上部)
  18. 10种方法将使你的Windows系统崩溃
  19. 国家互联网金融整治 将封堵服务器在境外平台
  20. 工业控制系统发展趋势 --PLC的虚拟化和软件定义

热门文章

  1. java两种异常_JAVA两种异常的区别 (转)
  2. java 配置hdfs集群_Hadoop集群搭建-04安装配置HDFS
  3. error C2143: syntax error : missing ';' before '}'
  4. java - 水仙花数
  5. R语言smoothHR包_SmoothHR產品官方網站 全新體驗、正式上線 !
  6. python如何把一张图像的所有像素点的值都显示出来_情人节,教你用 Python 向女神表白...
  7. python(20)之读写文件
  8. mysql master-user_【MySQL】MySQL5.6数据库基于binlog主从(Master/Slave)同步安装与配置详解...
  9. 【OpenCV 例程200篇】62. 图像锐化——钝化掩蔽
  10. android 按钮控制线程,关于手机安卓-线程测试