java none怎么用tomcat_在docker中部署tomcat并且部署java应用程序的步骤详解
先给大家简单说下Docker的概念
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
1、先说如何在docker中部署tomcat
第一步:root用户登录在系统根目录下创建文件夹tomcat7,命令如:mkdir tomcat7,并且切换到该目录下:cd tomcat7;
第二步:创建Dockerfile,命令如:touch Dockerfile;
第三步:编写Dockerfile,命令如:vim Dockerfile,完成以下命令编写:
FROM ubuntu:14.04
MAINTAINER zhaichong
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地址和这个端口来访问docker容器中的tomcat以及其中的应用程序了。
第六步:测试:在浏览器地址栏敲: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并且部署java应用程序的步骤详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对聚米学院网站的支持!
java none怎么用tomcat_在docker中部署tomcat并且部署java应用程序的步骤详解相关推荐
- docker 发布tomcat项目_在docker中部署tomcat并且部署java应用程序的步骤详解
1.先说如何在docker中部署tomcat 第一步:root用户登录在系统根目录下创建文件夹tomcat7,命令如:mkdir tomcat7,并且切换到该目录下:cd tomcat7: 第二步:创 ...
- IDEA中Git的配置及其使用(图文结合,步骤详解)
前言 项目管理离不开版本控制,目前主流版本控制工具大概就是SVN和Git,至于两者有啥区别这里就不详细介绍了,如果有不明白的可以上网查资料,而且现在市场上Git的使用率已经远远高于SVN.我们在用ID ...
- vue中如何调用ios摄像头_vue2.0调用摄像头步骤详解
这次给大家带来vue2.0调用摄像头步骤详解,使用vue2.0调用摄像头的注意事项有哪些,下面就是实战案例,一起来看一下. 可以在github 上下载demo链接 vue组件代码 import {Ex ...
- 如果在docker中部署tomcat,并且部署java应用程序
2019独角兽企业重金招聘Python工程师标准>>> 如果在docker中部署tomcat,并且部署java应用程序 博客分类: docker 1.先说如何在docker中部署to ...
- java实现for文件删除_Java 添加、删除、替换、格式化Word中的文本的步骤详解(基于Spire.Cloud.SDK for Java)...
Spire.Cloud.SDK for Java提供了TextRangesApi接口可通过addTextRange()添加文本.deleteTextRange()删除文本.updateTextRang ...
- java中String s=abc及String s=new String(abc)详解
java中String s="abc"及String s=new String("abc")详解 1. 栈(stack)与堆(heap)都是Java用来在R ...
- Docker实现运行tomcat并部署项目war包,并实现挂载目录
一.docker下载tomcat镜像并运行 1:搜索tomcat镜像 docker search tomcat 2:根据搜索出来的列表下载tomcat #下载命令docker pull tomcat ...
- Thrift实现C#调用Java开发步骤详解
概述 Thrift实现C#调用Java开发步骤详解 详细 代码下载:http://www.demodashi.com/demo/10946.html Apache Thrift 是 Facebook ...
- python的继承用法_【后端开发】python中继承有什么用法?python继承的用法详解
本篇文章给大家带来的内容是关于python中继承有什么用法?python继承的用法详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 面向对象三大特征 1.封装:根据职责将属性和方法 ...
最新文章
- 机器学习模型调优总结!
- python计算出nan_python如何进行汇总统计?
- 人民日报:为人工智能注入更多安全基因
- 设计模式解析学习(一)
- numpy笔记 linalg
- Java设计模式笔记(7)适配器模式
- python3之后版本读取网页的内容
- 添加删除 板块 struts2
- 如何部署一台DELL虚拟化服务器:CentOS7.4系统,虚拟化技术
- Java 代理模式之三:Cglib动态代理
- Android Studio:Support Library依赖包的版本号
- 叛乱联机服务器未响应,叛乱沙漠风暴开服注意事项及操作指南经验一览
- Diffusion扩散模型简述 + 代码demo
- SO、SOP、SOIC、MSOP、TSSOP、TSOP、VSSOP、SSOP、SOJ封装详解
- 为什么短除法能求最小公倍数?
- 联想g510升级换什么cpu好_老775平台还有升级CPU的必要吗?实测来告诉你
- java-net-php-python-jspm库存管理系统计算机毕业设计程序
- AngelSword(天使之剑)漏洞框架的使用
- 【应用随机过程】04. 马尔可夫链的平稳分布
- 网线连接olt配置计算机IP,EPON-ONU-OLT配置手册.pdf
热门文章
- windows7 系统盘 瘦身软件介绍: 冗余文件清理工具
- C#模拟js的Json对象创建,操作
- Eclipse+svn+subclipse配置
- 剑指offer(C++)-JZ23:链表中环的入口结点(数据结构-链表)
- 内存释放_把微信这两个开关关掉, 手机立马释放大量内存, 快去试试吧
- 接口测试——Jmeter常见问题解决方法
- python开发效率怎样提高_python 提高开发效率的5个小技巧
- 单元测试框架-Junit
- 21天Jmeter打卡Day12 逻辑控制器之循环控制器
- 为什么企业宁愿花 15K 重新招人,也不愿意花 10K 留住老测试员?