compose部署tomcat

1.部署tomcat

  1.1.下载相关镜像tomcat8.5.20

  $ docker pull tomcat:8.5.20

  1.2 在/data目录下创建tomcat/webapps目录
                               
  mkdir -p /data/tomcat/webapps

  注意:这里是准备将宿主机的/data/tomcat/webapps映射到容器的
        /usr/local/tomcat/webapps目录,那么在创建tomcat-0容器后,
    本应该存在与webapps目录下的原生目录(例如:manager等)都
    将不存在,因为映射的宿主机目录/data/tomcat/webapps为空,
    所以将不能采用tomcat原有部署方式,只能将war通过rz命令上传
    至宿主机的/data/tomcat/webapps目录
  
  1.2.测试镜像
  
  $ docker run \
          -p 8080:8080 \
          --name tomcat-0 \
          --privileged=true \
          --restart=always \
          -v /soft/tomcat/webapps:/usr/local/tomcat/webapps \
          -e TZ=Asia/Shanghai \
          -itd tomcat:8.5.20       
         
   注1:TZ=Asia/Shanghai用于设置时区为:亚洲/上海,可进入容器用如下命令进行查看
            echo `date "+%Y-%m-%d %H:%M:%S"`
   注2:以上容器的创建采用的是bridge默认网络

   注3:
   firewall-cmd --list-ports
   firewall-cmd --zone=public --add-port=8080/tcp --permanent
   firewall-cmd --reload
   firewall-cmd --zone=public --remove-port=8080/tcp --permanent
  
  3.上传hello.war至/data/tomcat/webapps目录

    rz hello.war

  4.测试crm项目
    http://xx.xx.xx.xx:8080/crm/sys/loginAction.action?username=zs&password=123

    注1:修改crm.war的数据库IP、数据库名及账号密码
    注2:测试报错,不在同一个网络所以连不上
         tomcat-0 -> bridge默认网络
     mysql    -> mynetwork自定义网络

2.部署web项目 

  向移植docker compose  
  详见/docker-compose/docker-compose-v1.yml文件


3.解决服务之间依赖问题
  场景说明:见images/01 Docker服务之间的依赖关系.png
  解决方案:docker官方推荐使用wait-for-it.sh脚本来解决问题,课件:资料/wait-for-it-master.zip已提供
                   什么是wait-for-it.sh?
                   wait-for-it.sh脚本用来访问指定的地址和端口,如果收不到响应就等待一段时间再去重试,直到收到响应后,再去做前面指定好的命令
                   command: ["./wait-for-it.sh", "mysql-master:3306", "--", "catalina.sh", "run"]
  注意事项:注意如果你使用wait-for-it.sh脚本,如果你的基础镜像不包含bash命令(比如alpine镜像)需要安装bash,
            不然没法执行wait-for-it.sh脚本导致容器启动失败。
            如果Dockerfile的基础镜像用的是alpine相关的基础镜像的话,记得添加如下指令安装bash:
            RUN apk update
            RUN apk upgrade
            RUN apk add --no-cache bash
             
            ##课程中下载的tomcat:8.5.20镜像sh/bash命令均支持
            docker exec -it tomcat-0 /bin/bash #不报错,能进入容器,即安装了bash命令
            docker exec -it tomcat-0 /bin/sh   #即安装了sh命令  

  3.1.制作自己mytomcat:8.5.20镜像
    
    1.上传相关文件至/docker-compse目录
      Dockerfile-mytomcat8.5.20
      wait-for-it.sh
    
    2.制作自定义镜像
      docker build -f Dockerfile-mytomcat8.5.20 -t mytomcat:8.5.20 .


  3.2.移植到docker-compose

    注:一定要修改docker-compose-v5.yml文件中的tomcat容器镜像指向刚刚创建的mytomcat:8.5.20
    注:一定要修改docker-compose-v5.yml文件中的tomcat容器镜像指向刚刚创建的mytomcat:8.5.20
    注:一定要修改docker-compose-v5.yml文件中的tomcat容器镜像指向刚刚创建的mytomcat:8.5.20

    使用自定义的mytomcat:8.5.20镜像构建tomcat容器。

    详见docker-compose/docker-compose-v5.yml

    docker-compose启动成功后,先停止tomcat容器,再停止mysql-master容器,再启动tomcat容器,查看tomcat容器日志,这时将提示wait等待中,最后在启动mysql-master后tomcat容器将正常启动。
   
    #容器启停命令
    docker -f docker-compose-v5.yml stop tomcat-0
    docker -f docker-compose-v5.yml stop mysql-master
    docker-compose -f docker-compose-v5.yml up -d tomcat-0
    docker-compose -f docker-compose-v5.yml up -d mysql-master
    #查看容器日志
    docker-compose -f docker-compose-v5.yml logs -f tomcat-0
    docker -f docker-compose-v5.yml logs -f 
   

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Oracle篇—分区表和分区索引的介绍和分类(第一篇,总共五篇)

☘️博主介绍☘️: ✨又是一天没白过,我是奈斯,DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、Linux,也在积极的扩展IT方向的其他知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章,并且也会默默的点赞收藏加关注❣…

ChatGPT 引导语写法参考(翻译类引导语)

充当英语翻译和改进者 我想让你充当英文翻译员、拼写纠正员和改进员。我会用任何语言与你交谈,你会检测语言,翻译它并用我的文本的更正和改进版本用英文回答。我希望你用更优美优雅的高级英语单词和句子替换我简化的 A0 级单词和句子。保持相同的意思&am…

顶顶通呼叫中心中间件利用自动外呼进入机器人的压力测试配置流程

文章目录 前言呼入进入机器人配置流程呼入配置创建线路创建线路组创建自动外呼任务1. 实现“一端放音,另一端进入机器人”操作创建拨号方案—“模拟放音”呼叫路由—“internal”启用拨号方案—“模拟放音”队列外呼配置 2. 实现“两端都进入机器人”操作队列外呼配…

JavaWeb会议管理系统

相关技术: Servlet Tomcat jsp MySQL 有需要的可以联系我。 功能介绍: 会员管理系统:系统管理、用户管理、角色管理、菜单管理、日志管理、部门管理 会议管理:会议室管理、我的会员、会员纪要、修改密码、安全退出 会议室管…

C/C++读写文件和stringstream类

目录 C处理文件打开文件两种函数的区别 读文件两种函数区别其它读操作的函数fgetc:从文件中读取一个字符fgets:从文件中读取一个字符串fscanf:按格式从文件中读取指定内容,与scanf函数类似 写文件其它的常用写操作函数fputc&#…

【网站项目】基于SSM的263货物进销管理系统

🙊作者简介:多年一线开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

Java项目:基于ssm框架实现的电影评论系统(ssm+B/S架构+源码+数据库+毕业论文)

一、项目简介 本项目是一套ssm826基于ssm框架实现的电影评论系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#x…

Elasticsearch:2023 年 Lucene 领域发生了什么?

作者:来自 Elastic Adrien Grand 2023 年刚刚结束,又是 Apache Lucene 开发活跃的一年。 让我们花点时间回顾一下去年的亮点。 社区 2023 年,有: 5 个次要版本(9.5、9.6、9.7、9.8 和 9.9),1 …

【CSP-J/S】复赛注意事项 上机文件组织形式

每年 CSP-J/S 复赛都有很多同学因为一些小失误导致一年的努力付之东流。Tony老师整理了一些复赛容易踩坑的点,或许对你有帮助! 一、文件的输入输出 CSP、NOIP复赛与我们平时在Online Judge做题形式会有一些区别,需要我们将文件放入规定的地…

基于模糊PID控制器的风力温度控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 模糊逻辑控制原理 4.2 PID控制原理 4.3 模糊PID控制器原理 4.4 整体系统概述 5.完整工程文件 1.课题概述 当房间的温度不能保持目标温度时,这个系统中的某个部件肯定出现问题了&#x…

flink学习之窗口处理函数

窗口处理函数 什么是窗口处理函数 Flink 本身提供了多层 API,DataStream API 只是中间的一环,在更底层,我们可以不定义任何具体的算子(比如 map(),filter(),或者 window()),而只是…

怎么缩小动图的大小?一分钟快速压缩gif体积

GIF动图是一种使用GIF文件格式创建的动画图像。GIF是一种常见的图像文件格式,它支持多帧图像以形成连续播放的动画效果。与其他图像格式只能表示静态图像不同,GIF格式可以存储多个图像帧,并通过在特定时间间隔内循环播放这些帧来创建动画效果…

Instagram被停用怎么办?2024年ins停权最新解决方法

大家有没有遇到过 Instagram 账号突然无缘无故消失的情况?这很有可能是 Instagram 无故禁用了你的账号,面对 Instagram 账号突然被停用的情况,许多用户都感到困惑和无助。这个问题可能影响到你的社交生活,甚至是商业活动。但别担心…

写给不耐烦程序员的 JavaScript 指南(五)

第七部分:集合 原文:exploringjs.com/impatient-js/pt_collections.html 译者:飞龙 协议:CC BY-NC-SA 4.0 下一步:30 同步迭代 三十、同步迭代 原文:exploringjs.com/impatient-js/ch_sync-iteration.htm…

【开源】基于JAVA的人事管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 管理员功能模块2.2 普通员工功能模块2.3 答辩文案 三、系统展示四、核心代码4.1 查询职称4.2 新增留言回复4.3 工资申请4.4 工资审核4.5 员工请假 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的人…

制造领域 物料清单(BOM)与零件明细表的区别

有许多人分不清物料清单(BOM)与零件明细表的区别,其实它们在企业的生产管理软件中起着不同的作用,各有各的特色,但是却有不尽相同。接下来我们就来区分一下吧 物料清单(BOM),是详细记录一个项目所用到的所有下阶材料及相关属性,亦即母件与所有子件的从属…

【2024-01-22】某极验3流程分析-滑块验证码

声明:该专栏涉及的所有案例均为学习使用,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!如有侵权,请私信联系本人删帖! 文章目录 一、前言二、抓包流程分析1.刷新页面2.点击按钮进行验证…

第二证券:暴跌超24%!美农产品贸易巨头一夜蒸发超600亿

当地时刻1月22日,美股三大股指集体收涨,道指与标普500指数再创前史新高,道指初次收在38000点上方。到收盘,道指涨0.36%,标普500指数涨0.22%,纳指涨0.32%。 大型科技股涨跌不一,其中&#xff0c…

Netty篇章(1)—— 核心原理介绍

终于进入到Netty框架的环节了,前面介绍了大量的Java-NIO的内容,核心的内容Selector、Channel、Buffer、Reactor掌握了,那么学起来Netty也是水到渠成的事情。如果没有掌握前面的内容那么学Netty会非常吃力,下面讲解Netty核心原理与…

Python - argparse模块

python中的argparse模块,用于命令后参数解析,方便测试,是python中自带的模块。 可以自动生成帮助文档,和使用手册。而且当用户在执行程序的时候,输入无效的参数时,会给出对应的错误信息。 使用方法&#…