如果在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,一经查实,立即删除!

相关文章

原语

一般地&#xff0c;把系统态下执行的某些具有特定功能的程序段成为原语。原语有两种&#xff1a;1是机器指令级的&#xff0c;其特点是执行期间不允许中断&#xff0c;正如在物理学中的原子一样&#xff0c;在操作系统中是一个不可分割的基本单位。2是功能型的&#xff0c;其特…

Spring Boot结合thymeleaf

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

通信与计算机网络FSC,数据通信与计算机网络概述信道习题.pdf

第一章、第二章习题 概述及信道与接口1、目前使用最为普遍的局域网是( )。A. 以太网 B. 标记环网 C.FDDI 网 D.标记总线网2、在 OSI 模型的七层结构中&#xff0c;能进行直接通信的是( )。A. 非同等层间 B. 物理层间 C.数据链路层间 D. 网络层间3、数据通信系统中传输的信息称(…

视觉测量简介

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

高并发系统之降级特技

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

处理机的三级调度

在有的操作系统中仅采用一级凋度&#xff0c;而有的操作系统则将凋度分为不同的层次&#xff0c;一个用户作业从进入系统成为后备作业开始&#xff0c;直到运行结退出系统为止&#xff0c;一般最多经历三级调度&#xff0c;即处理器调度可以分为以下3个层次。 1.高级调度(High …

进行代码复审训练

20180320作业2&#xff1a;进行代码复审训练任务说明&#xff1a; 一、结对&#xff0c;找到一个伙伴进行结对&#xff1b;&#xff08;在作业中标注自己的伙伴博客链接&#xff09; 王小梅&#xff1a; http://www.cnblogs.com/CURRY-30/p/8570290.html 二、各自对自己的伙伴上…

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

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

用计算机三级处理文件,【题目】计算机三级题目,献给为计算机三级挣扎的同学们...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼(165)Internet的邮件传输协议标准为_______。A)SNMP B)SMTP C)FTP D)TELNET答 案&#xff1a;B知识点&#xff1a;浏览器、电了邮件及Web服务器的安全特性评 析&#xff1a;SNMP即简单网络管理协议&#xff1b;SMTP即简单邮件传输协…

匈牙利命名法的优缺点

匈牙利约定优点匈牙利约定与其它命名约定一样&#xff0c;拥有由命名约定所带来的一切共同优点。由于有这样多的标准名称&#xff0c;因此在任何一个单个子程序或程序中要特殊记忆的名字是非常少的。匈牙利约定完全可以在不同项目中采用。匈牙利约定可以使得在命名中容易产生定…

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

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

图形学基础知识

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

12种排序算法

https://blog.csdn.net/love_gaohz/article/details/46673907 转载于:https://www.cnblogs.com/kongk/p/8641077.html

计算机应用基础精品课程申报表,《计算机应用基础》精品课程申报书(修改意见)...

4-3教学条件(含教材使用与建设&#xff1b;促进学生主动学习的扩充性资料使用情况&#xff1b;配套实验教材的教学效果&#xff1b;实践性教学环境&#xff1b;网络教学环境(网络平台&#xff0c;网络课件))突出的地方用红色表示。1&#xff0e;教材建设本课程目前使用的教材是…

用博客见证自己的成长

感谢CSDN博客&#xff0c;给我提供了一个学习交流的平台&#xff0c;自从开通博客以来&#xff0c;感觉自己的生活一下充实了很多。通过写博客来积累知识的同时&#xff0c;也给生活带来的很多的喜悦。 第一次发表博客&#xff1b;第一次有访客&#xff1b;第一次得到博客勋章&…

调度队列模型

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

linux基础命令(-)

最近在学linux&#xff0c;老师课堂上讲的估计下课就忘了&#xff0c;现整理下来以备不时之需。 PS1x //修改终端提示符su root //切换用户ssh root192.168.116.129 //加密远程连接 yum -y install sl //小火车yum -y install oneko //鼠标兔子date //查看日期cal 11 19…

数据库相关整理

一、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个平均的带权周转时间