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 
   

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

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

相关文章

LC 2765. 最长交替子数组

2765. 最长交替子数组 难度: 简单 题目大意: 给你一个下标从 0 开始的整数数组 nums 。如果 nums 中长度为 m 的子数组 s 满足以下条件,我们称它是一个 交替子数组 : m 大于 1 。s1 s0 1 。下标从 0 开始的子数组 s 与数组 [s0, s1, s0, s1,...,s(…

HarmonyOS鸿蒙学习笔记(22)@Builder实战

Builder标签是一种更轻量的UI元素复用机制,下面通过一个简单的例子来具体说明: 比如如下布局效果:上面是一个轮播的Swiper,下面是一个Grid 布局代码如下: build() {Navigation() {Scroll() {Column({ space: CommonConstants.CO…

测试老司机聊聊测试设计都包含什么?

一、数据组合测试设计 数据组合测试设计(Combinatorial Test Design,CTD)是一种优化测试用例的方法,它通过系统地组合不同的测试数据输入,以确保全面覆盖各种可能的测试情况。这种方法主要应用于软件测试领域&#xff…

性能优化-HVX 开发环境介绍

「发表于知乎专栏《移动端算法优化》」 本篇以 HVX 的开发环境配置以及应用实例编译测试为主进行讲述。 🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:高性能(HPC)开发基础教程 &#x1f3…

scanf解决遇到空格停止问题

scanf解决遇到空格停止问题 gets修改scanf的停止符 我们经常输入字符串的时候,遇到空格,scanf就会停止: 比如这时候我想输入一个句子:“My Love”: char* s (char*)malloc(sizeof(char)*100);scanf("%s", s…

Python数据分析:基础

数据分析是使用统计和计算机科学技术来解决现实世界问题的过程。Python是一种流行的编程语言,也是数据分析的常用工具之一。在Python中,有许多库和工具可用于数据分析,比如NumPy、Pandas、Matplotlib等。 NumPy是Python中用于科学计算的一个…

python 32位图转换8位图并压缩

安装 python -m pip install opencv-python 脚本 from PIL import Image import numpy as np import cv2 oldName "Down32.png" tempName "Down8.png" newName "Down.png" img Image.open(oldName).convert(P) print(img.getbands()) #…

摄像头电机马达驱动芯片LV8548/LV8549/ONSEMI替代料GC8548

摄像头电机马达驱动芯片GC8548,兼容替代 ON的LV8548 无需更改外围 . 下图为其参数分析: GC8548 是一款双通道 12V 直流电机驱动芯片,为摄像机、消费类产品、玩具和其他低压或者电池供电的运动控制类应用提供了集成的电机驱动解决方案。芯片…

hpa自动伸缩

1、定义:hpa全称horizontal pod autoscaling(pod的水平自动伸缩),这是k8s自带的模块。pod占用CPU的比率到达一定阀值会触发伸缩机制(根据CPU使用率自动伸缩) replication controller副本控制器&#xff0c…

带头 + 双向 + 循环链表增删查改实现

目录 源码: List.c文件: List.h文件: 简单的测试: 很简单,没什么好说的,直接上源码。 源码: List.c文件: #include"DLList.h"ListNode* creadNode(LTDataType x) {L…

力扣!30天60道(第2天)

第1题(1.22) &#xff1a;两数之和 解法一&#xff1a;暴力破解 #include <iostream> #include <vector> #include <map> using namespace std;class Solution { public:vector<int> twoSum1(vector<int>& nums, int target) {for (int i …

Java8 安装

> 新版任你发&#xff0c;我用JAVA8 1. 下载jdk包 2. 解压到自己要的位置 3. 配置环境变量 export JAVA_HOME/usr/lib/jvm/jdk1.8.0_202/ export JRE_HOME${JAVA_HOME}/jre export CLASSPATH.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH${JAVA_HOME}/bin:$PATH

GraphicsMagick 的 OpenCL 开发记录(十八)

文章目录 gm benchmark性能比较 <2022-04-07 Thu> gm benchmark性能比较 仅运行一次缩放图片的话gm-ocl&#xff08;启用了硬件加速&#xff09;的速度远小于gm&#xff08;没有硬件加速&#xff0c;下同&#xff09;&#xff0c;而迭代100次的话&#xff0c;gm-ocl速度…

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

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

grpcui安装使用

官网地址&#xff1a;https://github.com/fullstorydev/grpcui 安装命令&#xff1a; go get github.com/fullstorydev/grpcui go install github.com/fullstorydev/grpcui/cmd/grpcui ./bin/grpcui --import-path/home/xx/proto -proto xx.proto --plaintext 10.2.9.112:1…

Leetcode 17.电话号码的字母组合 - Letter Combinations of a Phone Number - Python - 回溯法

解题思路&#xff1a; 回溯法三部曲&#xff1a; 1.回溯函数的参数&#xff1b; 2.确定终止条&#xff1b; 3.确定单层遍历逻辑&#xff1b; 注意&#xff1a; 这道题有一点很有趣的地方是&#xff0c;你需要先遍历给定的digits字符串&#xff0c;此处可想象成树型结构。…

GEE脚本——GEE中如何查询历史脚本和防丢失记录

很多时候我们会发现我们之前编辑的脚本不见了,本来已经编辑好了但是发现原来的脚本更完美,至于诸如此类的一些问题,当我们在使用GEE中的代码编译器的时候会时不时的出现,这里我们也无需过多担心,这里只要你首次将代码保存在你所创建的项目当中的时候我们就可以查看以往每一…

【爬虫、数据可视化实战】以“人口”话题为例爬取实时微博数据并进行舆情分析

前言&#xff1a; 近期在weibo上讨论的比较热的话题无非就是“人口”了。TaoTao也看了一些大家发的内容。但是感觉单纯的看文字内容不能很直观的反应出来大家的关切。索性就使用爬虫对数据进行爬取&#xff0c;同时结合着数据可视化的方式让数据自己开口说话。那么接下来就让我…

Python源码49:海龟画图turtle画美国旗

---------------turtle源码集合--------------- Python教程91&#xff1a;关于海龟画图&#xff0c;Turtle模块需要学习的知识点 Python源码45&#xff1a;海龟画图turtle画雪容融 Python源码44&#xff1a;海龟画图turtle&#xff0c;画2022卡塔尔世界杯吉祥物 Python教程…

《WebKit 技术内幕》学习之十(3): 插件与JavaScript扩展

3 JavaScript引擎的扩展机制 3.1 混合编程 混合编程由来已久&#xff0c;因为浏览器能力的不足&#xff0c;特别是以前的浏览器甚至不支持内嵌视频和音频等技术&#xff0c;所以导致需要Flash等插件来扩展网页的能力。当然Flash插件是由第三方提供的&#xff0c;大家都可以使…