DockerFile 案例-自定义的 tomcat9|学习笔记

简介: 快速学习 DockerFile 案例-自定义的 tomcat9

开发者学堂课程【Docker 快速入门DockerFile 案例-自定义的 tomcat9】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/850/detail/14050


DockerFile 案例-自定义的 tomcat9


内容介绍

一、自定义的 tomcat9

一、自定义的 tomcat9

登录 docker hub 网站,搜索 tomcat,随便找一个8.5.3,过程写得复杂与否,关键词,保留字指令应该可以懂了

image.png

&&为连接符,这些不是 docker HUB 的,是 linux 脚本里面的,所以如果以后要进行编写,就要根据前面所讲的模版。

自定义镜像 tomcat9

做 my tomcat 9.0,或者 my tomcat 2018,一个案例把这些命令都穿起来,做的过程中讲解一下 add 和 copy。

1.mkdir -p /zzyyuse/mydockerfile/tomcat9

zzyyuse 自己版的 tomcat9,比方说有些功能需要自己去建,比方说现在从阿里云上面拖下来一个 tomcat,像改车一样奥拓变奥迪,做自己版本的 tomcat 9。

2.在上述目录下 touch c.txt

在当前路径下,建立一个 c.txt  文件是为了演示 copy,Copy 是宿主机,倒容器,容器到宿主机,会把 c.txt 拷贝到容器里面,c 是 copy 的缩写,没有什么意义,纯粹是是为了演示一些功能。

3.将 jdk(jdk-8u171-linux-x64.tar.gz) 和 tomcat(apache-tomcat-9.0.8.tar.gz)安装的压缩包拷贝进上一步目录

在当前路径下面有两个夹包和一个 c.txt

image.png

回顾一下 copy,copy 类似 ADD,拷贝文件和目录到镜像中。将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位。把宿主机的c.txt 拷贝进某个容器的路径里面。ADD 是将宿主机目录下的文件拷贝进镜像且 ADD 命令会自动处理 uRL 和解压 tar 压缩包。

4.在 /zzyyuse/mydockerfile/tomcat9 目录下新建 Dockerfile 文件

这个时候要求同学们已学脚本并能看懂,如下为构建 docker file 的上下文路径。

image.png

Docker file 是刚才用 vim 建的,具体内容如下:

FROM    centos(加载的最底层)

MAINTAINER     zzyy<zzyybs@126.com>

#把宿主机当前上下文的 c.txt 拷贝到容器 /usr/ local/ 路径下

COPY c.txt /usr/ local/cincontainer.txt(拷贝后重命名)

#把 java 与 tomcat 添加到容器中

ADD jdk-8u171-linux-x64.tar.gz /usr/ local/

ADD apache-tomcat-9.0.8.tar.gz /usr/ local/

#安装 vim 编辑器

RUN yum -y install vim

#设置工作访问时候的 WORKDIR 路径,登录落脚点

ENV MYPATH /usr/ local

WORKDIR $MYPATH

#配置 java 与 tomcat 环境变量

ENV JAVA_HOME /usr/ local/jdk1.8.0_171

ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

ENV CATALINA_HOME /usr/ local/apache-tomcat-9.0.8

ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.8ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

(类似于原来在 linux 里面学的 VIETCProfile 文件,文件里面写清楚 tomcat 路径)

#容器运行时监听的端口

EXPOSE 8080(运行端口)

#启动时运行 tomcat

#ENTRYPOINT ["/usr/local/apache-tomcat-9.0.8/bin/startup.sh"](标准写法)

# CMD ["/usr/local/apache-tomcat-9.0.8/bin/catalina.sh" , "run"](jason串写法)

GMD /usr/local/apache-tomcat-9.0.8/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.8/bin/logs/catalina.out

现在想做自己版本的 tomcat 9,Centos 系统上,先安装 jdk,再安装 tomcat,Add 和 c.txt 一样,都是把宿主机当前上下文的 jdk 和 Apache,添加到容器user local 路径下,只不过这个 add 的是解压缩以后的拷贝,这个 centos 是从阿里云上面拉下来的, 它天生不带 vim,所以后面运用了 run。这个 centos 默认为根目录,现在让其登录 user local,WorkDIR 就是 mypath。

5.构建

image.png

在当前路径下,可以命名自己的 tomcat,输入 Docker build dockerfile,如果没有默认写 -f,就会默认读 dockerfile,所以可以和以前一样不用写,和以前不一样,就不用写。输入了 docker build-t zztyytomcat 9,回车开始执行。

image.png

Copy 执行后有一点卡,是因为一方面要解压缩,另一方面要拷贝,Jd k8和他们tomcat9 都是比较大的,默认是不带 vim,红色的文字都是警告,33个选项都装完以后就可以了。装完以后,Docker build 后面没有写 -f了 ,没有 -f 说明只要单迁入机下面就有 Dockerfile 直接读,-t 加标签和名字,每一个蓝色框代表一层镜像。输入 docker images,会出现 zzyytomcat 9,大小为700多兆,11秒前刚刚创建。

6.run

有镜像 docker file,第一步编写完成,第二部是 dockerbuild形成新的镜像,现在的镜像名字为 zzyytomcat9,第三步是 run,不是像想象的那样 docker run-p 写一个端口映射这样简单。

应该改输入以下内容

docker run -d -p 9080:8080 --name myt9 -v /zzyyuse/mydockerfile/tomcat9/test:/usr/local/apache-tomcat-9.0.8/webapps/test -v /zzyyuse/mydockerfile/tomcat9/tomcat9logs/:/usr/local/apache-tomcat-9.0.8/logs --privileged-true zzyytomcat9

docker run -d -p 9080:8080 --name myt9

zzyytomcat9

现在把 tomcat 9 启动以后,不想看到前台很多日志出来,9080和8080是端口映射,docker run -d 为第一部分,-p 9080:8080 为第二部分,--name myt9

为第三部分,--name myt9 让 zzyytomcat9 跑起来的容器不想让 docker,自己分配名字,所以叫 my t9,-v 是添加了两个容器,宿主机的目录和容器里面的对应,之前是一对一,现在是多对多,之前是一个宿主机,对应一个容器卷,现在是多个宿主机的目录,对应多个容器卷,换句话说是多个一对一,Test 的意思是到后期test 部署在主机上也是一个 test,自动的共享到容器里面,Tomcat 再一跑动,在容器里面的 tomcat 就可以跑发布的微服务。

--privileged=true 如果写权限不够的话会出错,有问题可以加,没问题可以不加。

7.验证

image.png

此时9080映射到8080了,为 zzyytomcat9 为镜像跑的实例容器为038cad905302,可以使用9080访问容器内部的8080。浏览器访问9080,9080端口上tomcat成功运行。根据前面所写,现在的镜像文件,输入 cat docker file,现在的工作目录是user/local。

image.png

这串代码的意思是相当于在外部容器里面,可以隔空取物,这个容器是 centos9 加Jdk8,执行 ls-l 命令,这就相当于在执行 user log 命令下面执行命令。

如果 run-d 后台方式启动,没有前台交互页面,想要进去看,或者说是在容器外面执行容器里面,去执行某个命令。验证通过以后,自己版本的 tomcat9 到此完成。

8.结合前述的容器卷将测试的 web 服务 test 发布

主机刚刚没有 test 和 tomcat 9,但是用的容器卷,没有就新建,主机上往 test 里面添加内容,会自动发布到 tomcat webapps 的 test 里面。

image.png

因为现在做的这个容器,它运行的是 zzyytomcat 9 和 jdk8 的结合体,这时候针对这个容器使用 java 会返回,直接得到结果。

相关文章
|
3月前
|
Java 应用服务中间件 Windows
【应用服务 App Service】App Service 中部署Java项目,查看Tomcat配置及上传自定义版本
【应用服务 App Service】App Service 中部署Java项目,查看Tomcat配置及上传自定义版本
|
3月前
|
应用服务中间件 Linux iOS开发
使用 setenv 配置文件管理 Tomcat 的自定义环境变量
【8月更文挑战第29天】通过在Tomcat安装目录的`bin`文件夹下创建`setenv.sh`或`setenv.bat`文件,可以轻松管理Tomcat的自定义环境变量。针对Linux/macOS系统,需编辑`setenv.sh`文件,如`export MY_CUSTOM_VAR=&quot;my custom value&quot;`;而在Windows系统中,则编辑`setenv.bat`,如`set MY_CUSTOM_VAR=my custom value`。
154 1
|
3月前
|
Java 应用服务中间件 Windows
【App Service for Windows】为 App Service 配置自定义 Tomcat 环境
【App Service for Windows】为 App Service 配置自定义 Tomcat 环境
|
3月前
|
Java 应用服务中间件 Windows
【Azure 应用服务】App Service for Windows 环境中为Tomcat自定义4xx/5xx页面
【Azure 应用服务】App Service for Windows 环境中为Tomcat自定义4xx/5xx页面
|
4月前
|
Java 应用服务中间件 Shell
|
Java 应用服务中间件 Docker
【docker】DockerFile制作tomcat镜像并发布镜像到DockerHub
【docker】DockerFile制作tomcat镜像并发布镜像到DockerHub
|
Java 应用服务中间件 Docker
Docker从入门到精通——实战Dockerfile构建Tomcat镜像
Docker从入门到精通——实战Dockerfile构建Tomcat镜像
326 0
|
Java 应用服务中间件 Docker
Docker Review - dockerfile 实战_使用dockerfile制作tomcat镜像
Docker Review - dockerfile 实战_使用dockerfile制作tomcat镜像
124 0
|
Java 应用服务中间件 网络安全
五、使用Dockerfile自定义Tomcat镜像
五、使用Dockerfile自定义Tomcat镜像
|
应用服务中间件 Linux Docker
Docker系列(4)--Docker上基于Centos部署自定义Tomcat环境
Docker系列(4)--Docker上基于Centos部署自定义Tomcat环境
177 0