Docker 学习笔记(九)-- Dockerfile 构建Tomcat 实战测试

2023-11-07

1、准备镜像文件

Tomcat 压缩包: Apache Tomcat® - Welcome!

依赖的 JDK 压缩包 : [Java Downloads | Oracle](https://www.aliyundrive.com/s/YzH6o5G5QUu)

下载 后缀 tar.gz 文件。

[root@localhost home]$ mkdir -p mianbao/build/tomcat
[root@localhost home]$ cd mianbao/build/tomcat/
[root@localhost tomcat]$ ll
总用量 155812
-rw-r--r--. 1 root root  11543791 75 23:53 apache-tomcat-9.0.60.tar.gz
-rw-r--r--. 1 root root 148003421 75 23:53 jdk-8u333-linux-x64.tar.gz

2、编写 DockerFile 文件

[root@localhost tomcat]$ touch readme.txt
# 官方命名为 Dockerfile,build 会自动寻找这个文件,就不需要 -f 指定 dockerfile 文件了
[root@localhost tomcat]$ vim Dockerfile

Dockerfile 内容:

# 基础镜像:tag
FROM centos:centos7
# 作者信息
MAINTAINER mianabo<843818747@qq.com>
# 拷贝文件
COPY readme.txt /usr/local/readme.txt
# 添加文件并解压到 /usr/local 目录下
ADD jdk-8u333-linux-x64.tar.gz /usr/local
ADD apache-tomcat-9.0.60.tar.gz /usr/local
# 安装 vim 
RUN yum -y install vim
# 环境变量 工作目录 进入容器后的目录
ENV MYPATH /usr/local
WORKDIR $MYPATH
# Java 和 Tomcat 的环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_333
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.60
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.60
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
# 暴露端口
EXPOSE 8080
# 运行 Tomcat 和 输出日志
CMD /usr/local/apache-tomcat-9.0.60/bin/startup.sh && tail -f /usr/local/apache-tomcat-9.0.60/logs/catalina.out

3、构建 Tomcat 镜像

# . 表示当前目录找 Dockerfile 文件
[root@localhost tomcat]$ docker build -t my_tomcat:1.0 .
....
Successfully built 18c352ccb430
Successfully tagged my_tomcat:1.0
# 查看生成的镜像
[root@localhost tomcat]$ docker images
REPOSITORY        TAG       IMAGE ID       CREATED              SIZE
my_tomcat         1.0       18c352ccb430   About a minute ago   821MB

4、运行镜像

防火墙开启 9090 端口:

firewall-cmd --zone=public --add-port=9090/tcp --permanent
firewall-cmd --add-port=9090/tcp
firewall-cmd --reload
# 查看开启的端口
firewall-cmd --list-ports

运行镜像:

docker run -d -p 9090:8080 \
--name diy_tomcat \
-v /home/mianbao/build/tomcat/webapps/test:/usr/local/apache-tomcat-9.0.60/webapps/test \
-v /home/mianbao/build/tomcat/logs:/usr/local/apache-tomcat-9.0.60/logs \
my_tomcat:1.0

启动成功后查看容器:

[root@localhost tomcat]$ docker ps
CONTAINER ID   IMAGE           COMMAND                  CREATED         STATUS         PORTS                   NAMES
eab3b1d2c9c7   my_tomcat:1.0   "/bin/sh -c '/usr/lo…"   6 seconds ago   Up 5 seconds   0.0.0.0:9090->8080/tcp  diy_tomcat

在这里插入图片描述

5、访问测试

可以通过 :http://虚拟机IP:9090/ 访问到 Tomcat 的首页。

6、发布项目

由于我们做了卷挂载,我们直接在宿主机的挂载目录编写项目就可以发布了。即在 ..../test 目录下:

[root@localhost test]$ mkdir WEB-INF
[root@localhost test]$ cd WEB-INF/
[root@localhost WEB-INF]$ vim web.xml
[root@localhost WEB-INF]$ cd ../
[root@localhost test]$ vim index.jsp

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    
	<display-name>test</display-name>    
</web-app>

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>hello, mianbao</title>
    </head>
    <body>
        -----------welcome------------
        <br />
        <%=" my docker tomcat. mianbao"%>
        <br />
        <br />
        <% System.out.println("-------my docker tomcat-------");%>
    </body>
</html>

7、访问测试

访问:http://IP:9090/test/

在这里插入图片描述

8、查看日志

[root@localhost tomcat]$ ll
drwxr-xr-x. 2 root root      4096 76 22:25 logs
[root@localhost tomcat]$ cd logs/
[root@localhost logs]$ ll
总用量 48
-rw-r-----. 1 root root  6289 76 00:27 catalina.2022-07-05.log
-rw-r-----. 1 root root  6710 76 22:32 catalina.2022-07-06.log
-rw-r-----. 1 root root 13092 76 22:45 catalina.out
-rw-r-----. 1 root root     0 76 00:27 host-manager.2022-07-05.log
-rw-r-----. 1 root root     0 76 22:25 host-manager.2022-07-06.log
-rw-r-----. 1 root root   408 76 00:27 localhost.2022-07-05.log
-rw-r-----. 1 root root   408 76 22:25 localhost.2022-07-06.log
-rw-r-----. 1 root root   747 76 00:30 localhost_access_log.2022-07-05.txt
-rw-r-----. 1 root root   458 76 22:45 localhost_access_log.2022-07-06.txt
-rw-r-----. 1 root root     0 76 00:27 manager.2022-07-05.log
-rw-r-----. 1 root root     0 76 22:25 manager.2022-07-06.log
[root@localhost logs]$ tail -f catalina.out 
06-Jul-2022 14:25:30.369 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/apache-tomcat-9.0.60/webapps/test]
06-Jul-2022 14:25:30.528 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/apache-tomcat-9.0.60/webapps/test] has finished in [159] ms
06-Jul-2022 14:25:30.541 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
06-Jul-2022 14:25:30.643 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [3011] milliseconds
06-Jul-2022 14:32:50.806 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.reload Reloading context [/test]
06-Jul-2022 14:32:50.806 INFO [Catalina-utility-2] org.apache.catalina.core.StandardContext.reload Reloading Context with name [/test] has started
06-Jul-2022 14:32:50.962 INFO [Catalina-utility-2] org.apache.catalina.core.StandardContext.reload Reloading Context with name [/test] is completed
-------my docker tomcat-------
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker 学习笔记(九)-- Dockerfile 构建Tomcat 实战测试 的相关文章

随机推荐

  • 【VScode设置免密登录及出现的问题】

    前言 使用VScode进行远程服务器代码调试时 每次都要输入密码 很麻烦 有木有 之前的操作请看 安装并使用VScode进行远程服务器代码调试及遇到的问题和解决办法 一 打开终端 登录上之后 创建一个新的终端 二 创建公钥和私钥 命令如下
  • Attention! No symbol directories found - please check your native debug configuration</font>

    我出现问题的版本是Android Studio2 2 3 之前项目是正常的 可以调试JNI代码 但是突然有一次不知道什么原因就无法调试 断点无法断下 调试时有这样的警告 Now Launching Native Debug Session
  • java进阶篇--TCP 为什么需要三次握手?

    TCP 协议是我们每天都在使用的一个网络通讯协议 因为绝大部分的网络连接都是建立在 TCP 协议上的 比如你此刻正在看的这篇文章是建立在 HTTP Hypertext Transfer Protocol 超文本传送协议 应用层协议的基础上的
  • 手把手教你微信第三方平台开发

    本文适合想接入第三方平台开发的同学 通过真实经验大致讲解一下相关业务 建议收藏以备不时之需 一 什么是微信开放平台 微信开放平台地址 微信开发平台实际上就是给微信外部人员提供微信能力的平台 我们可以在这个平台创建相关的应用 管理对应的认证
  • React服务端渲染框架Next.js入门之旅三:路由跳转和参数传递

    不带参数 静态路由 带参数 根据参数不同显示不同内容 动态路由 一 路由跳转 标签式跳转 在pages下新建juanA js以及juanB js作为两个跳转页面 juanA js import Link from next link exp
  • Vue => Vue监听组件滚动事件

    在dom元素上加ref 利用this refs recordwrapper获取到元素 添加滚动监听事件 希望得到的结果是滚动触发事件handleScroll 现在情况是失效 并没有监听到滚动动作 或者说滚动动作并没有出发事件 问题 监听事件
  • hadoop之hdfs分布式文件

    架构 HDFS是一个主从 Master Slaves 架构 由一个NameNode和一些DataNode组成 面向文件包含 文件数据 data 和文件元数据 metadata NameNode 负责存储和管理文件元数据 并维护了一个层次型的
  • 动态的为实体字段添加注解/注解属性

    可以动态的给实体添加注解 比如 导出表格的时候 根据条件决定是否导出该字段的列等使用 本例子将所有代码都放入工具类中 实际上有些不能实例化到内存中 只能作为一部分代码放在逻辑中 此种代码以再程序中标注 另一部分是可以持久化到内存 使用完工具
  • 移动端750怎么做响应式

    minimum scale 1 0 这个是同时设置最小缩放比例为1 0 在这里不写 user scalable no 禁用用户缩放功能 这样做的目的是为了确保网页在各种设备上都能够有合适的展示效果 缩放比例的限制可以避免用户过度缩放导致页面
  • JAVA IDEA中sout无法正常弹出,System.out.print,和System.out.println以及其他语句标红报错的问题。

    问题 在写代码时发现sout无法正常识别 println方法和println方法标红报错显示无法解析 问题分析 使用输出函数属于代码 而类中只能容纳变量以及方法 代码应该放在代码块 即方法 中 解决方法 在类中写一个方法 将代码放入方法中
  • macOS下 anaconda 虚拟环境及依赖包管理

    文章目录 环境管理 适用mac 1 2 创建虚拟环境失败后 排查问题 并再次成功创建虚拟环境的过程 依赖包管理 环境管理 适用mac 检查conda版本或是否已经安装 base lzh mac conda version conda 4 1
  • Yolo5の网络结构训练策略

    搬来的可能还是熟人的 抱歉啊 为了自己学习 讲解yolov5模型结构 数据增强 以及训练策略 官方地址 https github com ultralytics yolov5 yolov5模型训练流程 https blog csdn net
  • qt 编译时提示error: multiple definition of

    今天在用QT 5 4 1 编译程序时 提示error multiple definition 错误 以下红色字体为错误提示 D Wind PLT Projects BCS tmp moc Cntrlane cpp 156 error mul
  • 《Graph learning》

    上周发布的 图传播算法 上 中讲了关于图传播算法的基本范式和PageRank算法 本文将延续上周的文章 继续讲解剩下的三个算法 2 HITS HITS Hyperlink Induced Topic Search 另一个典型的图传播算法 其
  • 图形用户界面工具:Tkinter库

    Tkinter是Python默认的图形用户界面 Graphical User Interface GUI 库 Tkinter是T看interface 的缩写 意为Tkinter库是 Tkinter Tcl Tk的pathon接口 Tk它基于
  • 1.GAN生成mnist

    1 GAN Generative Adversarial Network 2 生成器 随机生成一个一维的100个随机数 latent dim 作为输入生成mnist图片 def build generator self model Sequ
  • matlab怎么定义矩阵变量_MATLAB01:基本的数学运算与矩阵运算

    若微信排版有问题 请点击阅读原文查看 MATLAB01 基本的数学运算与矩阵运算 MATLAB基本语法变量变量名保留变量不适合做变量名变量不应当覆盖内置函数变量类型数字型变量的显示格式MATLAB命令行使用MATLAB进行数字运算使用MAT
  • 【C语言】之实现大小写字母转换

    文件名 字母大小写转换 c 功能描述 输入一个字符判断其是否为字母 如果是字母则将大写转换为小写或将小写转换为大写 编写人 王廷云 编写日期 2017 1 10 include
  • Unreal Engine UE4虚幻引擎,生成Cubemap(HDR高动态范围贴图)

    1 在场景中添加Scene Capture Cube场景捕获立方体 2 在Scene Capture Cube细节面板中创建 Cube Render Target 立方体渲染目标 打开创建的 Cube Render Target 立方体渲染
  • Docker 学习笔记(九)-- Dockerfile 构建Tomcat 实战测试

    1 准备镜像文件 Tomcat 压缩包 Apache Tomcat Welcome 依赖的 JDK 压缩包 Java Downloads Oracle https www aliyundrive com s YzH6o5G5QUu 下载 后