接下来将编写一个Tomcat的Dockerfile文件,以此构建一个Docker镜像,并基于该镜像启动得到一个Tomcat容器,最后试着在该容器中部署一个测试项目

思路:

  • 基于centos镜像,配置一个jdk环境和tomcat环境,并进行环境变量的配置

1 jdk和tomcat下载

自行到网上下载jdk和tomcat的安装包,并上传到自己的服务器的任意目录下,如下图,我这里放在了/opt/web_app/docker_test目录下:

2 编写Dockerfile文件

在jdk和tomcat的安装包的同级目录也就是/opt/web_app/docker_test目录下,编写Dockerfile文件。

注:编写的Dockerfile文件的命名,最好就叫做Dockerfile,官方推荐的命名方式就是Dockerfile,这么命名,那么在使用docker build构建的时候,就会自动去寻找这个文件,而不需要使用-f去指定了文件!

Dockerfile文件的内容如下:

FROM centos#声明镜像是谁写的
MAINTAINER suhaha<suhaha@sinoiov.com>#从本地将jdk和tomcat的压缩包,复制到容器的/usr/local目录下去,并自动解压
ADD jdk-8u181-linux-x64.tar.gz /usr/local
ADD apache-tomcat-9.0.54.tar.gz /usr/local#声明工作目录,并通过WORKDIR命令,切换到工作目录
ENV MYPATH /usr/local
WORKDIR $MYPATH#环境变量设置,最终将java和tomcat都配置到PATH中
ENV JAVA_HOME /usr/local/jdk1.8.0_181
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:#JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.54
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.54
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin#使用RUN命令,通过yum安装一些日常的常用工具
RUN yum -y install vim
RUN yum -y install net-tools#对外暴露8080端口
EXPOSE 8080#执行tomcat的启动命令,并通过tail -f命令,持续跟踪日志输出
CMD /usr/local/apache-tomcat-9.0.54/bin/startup.sh && tail -f /usr/local/apache-tomcat-9.0.54/bin/logs/catalina.out

3 构建

使用如下命令构建

docker build -t my-diy-tomcat .

构建日志如下:

[root@VM-8-5-centos web_app]# docker build -t my-diy-tomcat .
Sending build context to Docker daemon  197.2MB
Step 1/15 : FROM centos---> 5d0da3dc9764
Step 2/15 : MAINTAINER suhaha<suhaha@sinoiov.com>---> Running in 0b9bccd0217d
Removing intermediate container 0b9bccd0217d---> a97454015399
Step 3/15 : ADD jdk-8u181-linux-x64.tar.gz /usr/local---> fc5754e8aa9d
Step 4/15 : ADD apache-tomcat-9.0.54.tar.gz /usr/local---> b804f9920f02
Step 5/15 : ENV MYPATH /usr/local---> Running in c69d11a02e1d
Removing intermediate container c69d11a02e1d---> 65fd2b51b346
Step 6/15 : WORKDIR $MYPATH---> Running in 89ffdb849840
Removing intermediate container 89ffdb849840---> ff9bf6740a9f
Step 7/15 : ENV JAVA_HOME /usr/local/jdk1.8.0_181---> Running in cb3e97f0f5c3
Removing intermediate container cb3e97f0f5c3---> 86e4466b3027
Step 8/15 : ENV CLASSPATH $JAVA_HOME/lib/dt.jar:#JAVA_HOME/lib/tools.jar---> Running in f5f0a404edd8
Removing intermediate container f5f0a404edd8---> 319cf44a7329
Step 9/15 : ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.54---> Running in 10bd17f04960
Removing intermediate container 10bd17f04960---> 2ee589f0ba3b
Step 10/15 : ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.54---> Running in 0d94d8c3b3bd
Removing intermediate container 0d94d8c3b3bd---> cbc2b4c9bad3
Step 11/15 : ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin---> Running in 2703da794149
Removing intermediate container 2703da794149---> af6be7727c8a
Step 12/15 : RUN yum -y install vim---> Running in a52f4bb0f584
CentOS Linux 8 - AppStream                       12 MB/s | 9.3 MB     00:00
CentOS Linux 8 - BaseOS                          10 MB/s | 7.5 MB     00:00
CentOS Linux 8 - Extras                         5.2 kB/s |  10 kB     00:02
Dependencies resolved.
================================================================================Package             Arch        Version                   Repository      Size
================================================================================
Installing:vim-enhanced        x86_64      2:8.0.1763-15.el8         appstream      1.4 M
Installing dependencies:gpm-libs            x86_64      1.20.7-17.el8             appstream       39 kvim-common          x86_64      2:8.0.1763-15.el8         appstream      6.3 Mvim-filesystem      noarch      2:8.0.1763-15.el8         appstream       48 kwhich               x86_64      2.21-12.el8               baseos          49 kTransaction Summary
================================================================================
Install  5 PackagesTotal download size: 7.8 M
Installed size: 30 M
Downloading Packages:
(1/5): gpm-libs-1.20.7-17.el8.x86_64.rpm        2.9 MB/s |  39 kB     00:00
(2/5): vim-filesystem-8.0.1763-15.el8.noarch.rp 3.5 MB/s |  48 kB     00:00
(3/5): vim-enhanced-8.0.1763-15.el8.x86_64.rpm   15 MB/s | 1.4 MB     00:00
(4/5): vim-common-8.0.1763-15.el8.x86_64.rpm     49 MB/s | 6.3 MB     00:00
(5/5): which-2.21-12.el8.x86_64.rpm             468 kB/s |  49 kB     00:00
--------------------------------------------------------------------------------
Total                                           8.9 MB/s | 7.8 MB     00:00
warning: /var/cache/dnf/appstream-02e86d1c976ab532/packages/gpm-libs-1.20.7-17.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEY
CentOS Linux 8 - AppStream                      1.6 MB/s | 1.6 kB     00:00
Importing GPG key 0x8483C65D:Userid     : "CentOS (CentOS Official Signing Key) <security@centos.org>"Fingerprint: 99DB 70FA E1D7 CE22 7FB6 4882 05B5 55B3 8483 C65DFrom       : /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transactionPreparing        :                                                        1/1 Installing       : which-2.21-12.el8.x86_64                               1/5 Installing       : vim-filesystem-2:8.0.1763-15.el8.noarch                2/5 Installing       : vim-common-2:8.0.1763-15.el8.x86_64                    3/5 Installing       : gpm-libs-1.20.7-17.el8.x86_64                          4/5 Running scriptlet: gpm-libs-1.20.7-17.el8.x86_64                          4/5 Installing       : vim-enhanced-2:8.0.1763-15.el8.x86_64                  5/5 Running scriptlet: vim-enhanced-2:8.0.1763-15.el8.x86_64                  5/5 Running scriptlet: vim-common-2:8.0.1763-15.el8.x86_64                    5/5 Verifying        : gpm-libs-1.20.7-17.el8.x86_64                          1/5 Verifying        : vim-common-2:8.0.1763-15.el8.x86_64                    2/5 Verifying        : vim-enhanced-2:8.0.1763-15.el8.x86_64                  3/5 Verifying        : vim-filesystem-2:8.0.1763-15.el8.noarch                4/5 Verifying        : which-2.21-12.el8.x86_64                               5/5 Installed:gpm-libs-1.20.7-17.el8.x86_64         vim-common-2:8.0.1763-15.el8.x86_64    vim-enhanced-2:8.0.1763-15.el8.x86_64 vim-filesystem-2:8.0.1763-15.el8.noarchwhich-2.21-12.el8.x86_64             Complete!
Removing intermediate container a52f4bb0f584---> 789176169e0a
Step 13/15 : RUN yum -y install net-tools---> Running in 1c2d4d8e49d9
Last metadata expiration check: 0:00:08 ago on Thu Oct 21 05:37:29 2021.
Dependencies resolved.
================================================================================Package         Architecture Version                        Repository    Size
================================================================================
Installing:net-tools       x86_64       2.0-0.52.20160912git.el8       baseos       322 kTransaction Summary
================================================================================
Install  1 PackageTotal download size: 322 k
Installed size: 942 k
Downloading Packages:
net-tools-2.0-0.52.20160912git.el8.x86_64.rpm   1.9 MB/s | 322 kB     00:00
--------------------------------------------------------------------------------
Total                                           600 kB/s | 322 kB     00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transactionPreparing        :                                                        1/1 Installing       : net-tools-2.0-0.52.20160912git.el8.x86_64              1/1 Running scriptlet: net-tools-2.0-0.52.20160912git.el8.x86_64              1/1 Verifying        : net-tools-2.0-0.52.20160912git.el8.x86_64              1/1 Installed:net-tools-2.0-0.52.20160912git.el8.x86_64                                     Complete!
Removing intermediate container 1c2d4d8e49d9---> 5f0bbc8724b7
Step 14/15 : EXPOSE 8080---> Running in af27169bf09e
Removing intermediate container af27169bf09e---> 47dff1593e42
Step 15/15 : CMD /usr/local/apache-tomcat-9.0.54/bin/startup.sh && tail -f /usr/local/apache-tomcat-9.0.54/bin/logs/catalina.out---> Running in d4bfa4792e38
Removing intermediate container d4bfa4792e38---> 33a8ac2f0649
Successfully built 33a8ac2f0649
Successfully tagged my-diy-tomcat:latest

构建图示如下:


构建完成之后,使用docker images命令,可以查看到我们构建的镜像:

[root@VM-8-5-centos web_app]# docker images | grep diy
my-diy-tomcat         latest    4c3b2ced86e8   About a minute ago   629MB

4 启动镜像

注:启动的时候,注意到我们这里通过-v命令挂载容器内的tomcat的webapps和logs日志目录到本地宿主机上,方便部署项目到容器内,也方便在本地宿主机查看日志。
命令如下

docker run -it -p 8080:8080 --name zhy_tomcat -v /home/docker/my-diy-tomcat/webapps/test:/usr/local/apache-tomcat-9.0.54/webapps/test -v /home/docker/my-diy-tomcat/logs/:/usr/local/apache-tomcat-9.0.54/logs my-diy-tomcat:latest

图示如下:

由上图可以看到tomcat启动成功
由于我们启动时通过-p 8080:8080命令做了端口映射(即将本地宿主机的8080端口,映射到容器内的8080端口上),因此接下来,测试从网页通过ip:8080端口去连接我们启动的tomcat,如下图,连接成功,证明tomcat容器启动成功,说明我们前面制作的tomcat的Dockerfile文件是没问题的!

5 部署项目tomcat中

接下来测试将一个测试项目test部署到容器中。

注:因为我们在上面启动镜像的时候,已经通过-v /home/docker/my-diy-tomcat/webapps/test:/usr/local/apache-tomcat-9.0.54/webapps/test命令做了数据卷映射,将本地宿主机的/home/docker/my-diy-tomcat/webapps/test目录,映射到了容器内的/usr/local/apache-tomcat-9.0.54/webapps/test目录。因此接下来我们测试部署项目到tomcat里面时,就不需要进入到容器内去部署了,只需要将项目部署到本地宿主机的/home/docker/my-diy-tomcat/webapps/test即可。

进入到目录下,创建一个WEB-INF目录,并进入到这新建的WEB-INF目录下,并创建一个web.xml文件,文件内容如下:

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/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"metadata-complete="true"><display-name>Welcome to zjxl</display-name><description>Welcome to zjxl</description></web-app>

接着回到test目录下,然后新建一个index.jsp文件,内容如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>hello,zjxl</title>
</head>
<body>
zhanghongyan say: Hello World!<br/>
<%
System.out.println("----my test web logs----");
%>
</body>
</html>

如此,测试项目test就算是部署完成了,接着通过网页,去试着访问我们部署的测试项目!如下图,访问成功,项目部署ok!

并且因为在我们的index.jsp中,有如下这么一行代码

System.out.println("----my test web logs----");

所以,我们每在页面访问一次,就会打印此一次日志到tomcat日志中。我们可以在宿主机上直接查看到该日志(因为做了数据卷映射!):

制作Tomcat的Dockerfile相关推荐

  1. Docker Review - dockerfile 实战_使用dockerfile制作tomcat镜像

    文章目录 Pre Docker 官方镜像 Dockerfile dockerfile制作tomcat镜像 准备软件 编写Dockerfile文件 dockerfile构建镜像 启动镜像 测试访问tom ...

  2. docker制作tomcat镜像并部署war包

    模拟面试小白: 需求:有一台没有网络的服务器,使用docker部署war包,没有tomcat镜像,限时30分钟. 小白:没网部署war包干啥,是不是工作不饱和让你们太闲了. 我:傻瓜,怪我没表达清楚, ...

  3. 制作Tomcat镜像

    制作Tomcat镜像 1.准备镜像文件tomcat压缩包,jdk的压缩包! 2.编写DockerFile文件,官方命名Dockerfile,build会自动寻找这个文件,就不需要-f指定了 注意:现在 ...

  4. 【Docker】镜像制作及使用Dockerfile制作镜像

    Docker镜像制作 1.镜像构成 2.使用容器制作镜像 Dockerfile是一个用于描述生产docker镜像的文件,它里面是一条条的指令,每条指令都会对镜像产生一定影响. 1.将springboo ...

  5. 【Docker】docker镜像的获取、制作方法、Dockerfile

    目录 docker镜像 docker镜像的获取: docker镜像的制作方法: 基于容器制作镜像: 基于docker file制作: dockerfile instructions: FROM: MA ...

  6. Docker基础(centos安装、阿里云镜像加速器配置、常用命令、数据卷、DockerFile、镜像推送阿里云等)

    Centos 8.1安装Docker 下载docker-ce.repo curl https://download.docker.com/linux/centos/docker-ce.repo -o ...

  7. 狂神说docker(最全笔记)

    笔记来源于 Docker https://www.bilibili.com/video/BV1og4y1q7M4 视频整理 一.Docker入门 1. Docker 为什么会出现 2. Docker的 ...

  8. 狂神说docker(最全笔记)--转载

    笔记来源于 Docker https://www.bilibili.com/video/BV1og4y1q7M4 视频整理 一.Docker入门 1. Docker 为什么会出现 2. Docker的 ...

  9. Dockerfile镜像制作

    Dockerfile镜像制作 Dockerfile 基础知识 FROM #基础镜像,一切从这里开始构建 MAINTAINER #镜像是谁写的,姓名+邮箱 RUN #镜像构建的时候需要运行的命令 ADD ...

最新文章

  1. 用Java写一个植物大战僵尸简易版!
  2. Spring学习(一)初识Spring
  3. fastdfs上传文件时候报错
  4. 【IT笔试面试题整理】链表
  5. mcq 队列_MCQ | 软件生命周期模型
  6. 深度学习 《梯度消失和梯度爆炸》
  7. python server酱_Python 超简单的邮件发送方法
  8. java回合制武侠手游_‎App Store 上的“群侠传-怀旧开放武侠RPG回合制手游”
  9. iosession在linux下拒绝链接,iosession 关闭
  10. 【Java】@transient代表着什么
  11. 初学XPath,其实很简单
  12. 凭实力蝉联第一!Flink 又双叒叕上榜啦
  13. .jar文件参与android源码编译
  14. 决策树(2)——CART算法
  15. List of regional organizations by population
  16. 谷歌宣布加入“反微软联盟”
  17. 重庆航天职业技术学院计算机系在哪个校区,重庆航天职业技术学院江北校区怎么样...
  18. 创造与魔法java语言_创造与魔法基础魔法大全 超实用基础魔法推荐
  19. 在重新格式化时不要删除自定义换行符(Don‘t remove custom line breaks on reformat)
  20. 将汉字转换为拼音或者翻转

热门文章

  1. EPICS--Sequencer第二部分--编译SNL程序
  2. Markdown编辑小技巧——文字篇(一)
  3. 财富故事:赚2万还是赔8万
  4. map结合list进行输出以及数组与元组的转换
  5. ARM7TDMI体系结构详解 各个后缀字母的含义
  6. 计算机字符串 对应10进制数,计算机系统基础(五)十进制数的表示
  7. Excel自学笔记 第四节 如何实现隐藏身份证后四位
  8. BS库的基本元素与遍历方法
  9. [极致用户体验] 为什么建议2022年不用“等比设计稿“+rem,而用“灵活设计稿“+px
  10. 【贴片SD Card介绍】贴片SD Card (LEILONG雷龙科技)