制作Tomcat的Dockerfile
接下来将编写一个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相关推荐
- Docker Review - dockerfile 实战_使用dockerfile制作tomcat镜像
文章目录 Pre Docker 官方镜像 Dockerfile dockerfile制作tomcat镜像 准备软件 编写Dockerfile文件 dockerfile构建镜像 启动镜像 测试访问tom ...
- docker制作tomcat镜像并部署war包
模拟面试小白: 需求:有一台没有网络的服务器,使用docker部署war包,没有tomcat镜像,限时30分钟. 小白:没网部署war包干啥,是不是工作不饱和让你们太闲了. 我:傻瓜,怪我没表达清楚, ...
- 制作Tomcat镜像
制作Tomcat镜像 1.准备镜像文件tomcat压缩包,jdk的压缩包! 2.编写DockerFile文件,官方命名Dockerfile,build会自动寻找这个文件,就不需要-f指定了 注意:现在 ...
- 【Docker】镜像制作及使用Dockerfile制作镜像
Docker镜像制作 1.镜像构成 2.使用容器制作镜像 Dockerfile是一个用于描述生产docker镜像的文件,它里面是一条条的指令,每条指令都会对镜像产生一定影响. 1.将springboo ...
- 【Docker】docker镜像的获取、制作方法、Dockerfile
目录 docker镜像 docker镜像的获取: docker镜像的制作方法: 基于容器制作镜像: 基于docker file制作: dockerfile instructions: FROM: MA ...
- Docker基础(centos安装、阿里云镜像加速器配置、常用命令、数据卷、DockerFile、镜像推送阿里云等)
Centos 8.1安装Docker 下载docker-ce.repo curl https://download.docker.com/linux/centos/docker-ce.repo -o ...
- 狂神说docker(最全笔记)
笔记来源于 Docker https://www.bilibili.com/video/BV1og4y1q7M4 视频整理 一.Docker入门 1. Docker 为什么会出现 2. Docker的 ...
- 狂神说docker(最全笔记)--转载
笔记来源于 Docker https://www.bilibili.com/video/BV1og4y1q7M4 视频整理 一.Docker入门 1. Docker 为什么会出现 2. Docker的 ...
- Dockerfile镜像制作
Dockerfile镜像制作 Dockerfile 基础知识 FROM #基础镜像,一切从这里开始构建 MAINTAINER #镜像是谁写的,姓名+邮箱 RUN #镜像构建的时候需要运行的命令 ADD ...
最新文章
- 用Java写一个植物大战僵尸简易版!
- Spring学习(一)初识Spring
- fastdfs上传文件时候报错
- 【IT笔试面试题整理】链表
- mcq 队列_MCQ | 软件生命周期模型
- 深度学习 《梯度消失和梯度爆炸》
- python server酱_Python 超简单的邮件发送方法
- java回合制武侠手游_App Store 上的“群侠传-怀旧开放武侠RPG回合制手游”
- iosession在linux下拒绝链接,iosession 关闭
- 【Java】@transient代表着什么
- 初学XPath,其实很简单
- 凭实力蝉联第一!Flink 又双叒叕上榜啦
- .jar文件参与android源码编译
- 决策树(2)——CART算法
- List of regional organizations by population
- 谷歌宣布加入“反微软联盟”
- 重庆航天职业技术学院计算机系在哪个校区,重庆航天职业技术学院江北校区怎么样...
- 创造与魔法java语言_创造与魔法基础魔法大全 超实用基础魔法推荐
- 在重新格式化时不要删除自定义换行符(Don‘t remove custom line breaks on reformat)
- 将汉字转换为拼音或者翻转
热门文章
- EPICS--Sequencer第二部分--编译SNL程序
- Markdown编辑小技巧——文字篇(一)
- 财富故事:赚2万还是赔8万
- map结合list进行输出以及数组与元组的转换
- ARM7TDMI体系结构详解 各个后缀字母的含义
- 计算机字符串 对应10进制数,计算机系统基础(五)十进制数的表示
- Excel自学笔记 第四节 如何实现隐藏身份证后四位
- BS库的基本元素与遍历方法
- [极致用户体验] 为什么建议2022年不用“等比设计稿“+rem,而用“灵活设计稿“+px
- 【贴片SD Card介绍】贴片SD Card (LEILONG雷龙科技)