美文网首页
基于tomcat基础镜像构建各种业务镜像|范例如APP

基于tomcat基础镜像构建各种业务镜像|范例如APP

作者: 程序员面试吧 | 来源:发表于2020-08-05 11:53 被阅读0次

    范例:APP 1

    创建 tomcat-app1 和 tomcat-app2 两个目录,表示基于 tomcat 自定义基础镜像构建出不同业务的 tomcat 应用镜像。这个时候我们就由普通用户来启动tomcat。并且我们使用命令类来启动tomcat(tail -f这样启动的容器就不会受tomcat 的影响)

    1、准备tomcat容器的默认显示web页面

    1)进入到/opt/dockerfile/web/tomcat/目录下分别创建两个不同的tomcat应用目录一个是app1、app2,这样做的好处事好部署后期不同的业务然后直接基于tomcat的基础镜像即可

    [21:29:12 root@docker ~]#cd /opt/dockerfile/web/tomcat/
    [21:29:20 root@docker tomcat]#mkdir tomcat-app{1,2}
    

    2)然后tomcat的压缩包上传上来,因为等会要基于tomcat的server.xml文件修改他的默认web显示页面

    #已经上传至服务器
    [21:31:11 root@docker tomcat]#ls apache-tomcat-9.0.37.tar.gz 
    apache-tomcat-9.0.37.tar.gz
    

    3)解压tomcat压缩包

    [21:31:15 root@docker tomcat]#tar xf apache-tomcat-9.0.37.tar.gz
    

    4)然后再将现在解压好的server.xml文件拷贝到/opt/dockerfile/web/tomcat/tomcat-app1目录下,这个server.xml文件决定了容器的tomcat启动之后再什么地方去找web显示页面文件

    [21:33:43 root@docker tomcat]#cp apache-tomcat-9.0.37/conf/server.xml /opt/dockerfile/web/tomcat/tomcat-app1/
    

    5)修改server.xml文件,修改它默认的web显示页面的目录,我们这是将他的web显示页面修改为

    #在这个配置文件中找到 appBase 这一行修改他的web根目录为/data/tomcat/webapps
    [21:33:44 root@docker tomcat]#vim /opt/dockerfile/web/tomcat/tomcat-app1/server.xml
    <Host name="localhost"  appBase="/data/tomcat/webapps"                                                                    
                unpackWARs="true" autoDeploy="true">
    

    6)准备自定义web页面,等会好将这个目录下的web页面解压到tomcat容器中的/data/tomcat/webapps中,以后再公司中将WEBserver目录替换成公司的数据目录即可

    [21:38:38 root@docker tomcat]#cd /opt/dockerfile/web/tomcat/tomcat-app1
    [21:38:54 root@docker tomcat-app1]#mkdir WEBserver
    

    7)WEBserver目录,并创建一个index.jsp,好做以区别app1和app2应用的web页面

    [21:39:01 root@docker tomcat-app1]#cd WEBserver/
    [21:39:55 root@docker WEBserver]#vim index.jsp
    
    zhangguiyuan tomcat-app1 APP1
    

    8)再将这个WEBserver文件夹打包,因为等会在dockerfiel中要让ADD参数解压到tomcat容器去,并且打包的时候有个小注意,就是我们是否包含WEBserver这个目录,如果一开始包含的WEBserver这个目录的话,就决定了tomcat访问的方式,是否添加WEBserver的URL。所以包括了就要一直包括,所以到了公司中一定要和开发商量好。千万不要来回变

    我们这里是不包含这个WEBserver这个目录

    [21:43:44 root@docker WEBserver]#tar czfv WEBserver.tar.gz ./*
    ./index.jsp
    

    9) 将WEBserver.tar.gz拷贝到/opt/dockerfile/web/tomcat/tomcat-app1目录中,等会好添加到dockerfile文件中

    [21:44:36 root@docker WEBserver]#cp WEBserver.tar.gz /opt/dockerfile/web/tomcat/tomcat-app1/
    
    #验证已经将WEBserver.tar.gz压缩包拷贝过来
    [21:45:52 root@docker WEBserver]#ll /opt/dockerfile/web/tomcat/tomcat-app1/WEBserver.tar.gz 
    -rw-r--r-- 1 root root 158 Jul 31 21:45 /opt/dockerfile/web/tomcat/tomcat-app1/WEBserver.tar.gz
    

    ** 2、准备app1业务镜像Dockerfile文件**

    [23:07:54 root@docker WEBserver]#cd /opt/dockerfile/web/tomcat/tomcat-app1/
    [21:52:03 root@docker tomcat-app1]#vim /opt/dockerfile/web/tomcat/tomcat-app1/Dockerfile
    
    #tomcat app1业务镜像
    
    #注释:基于tomcat-base:9.0.37镜像
    FROM tomcat-base:v9.0.37
    
    #添加server.xml文件修改默认的tomcat,web显示页面
    ADD server.xml /apps/tomcat/conf/server.xml
    
    #将我们的web页面压缩包WEBserver.tar.gz打进容器中
    ADD WEBserver.tar.gz /data/tomcat/webapps/WEBserver
    
    #给www用授权/data/tomcat/ 的权限,我们需要调用这个目录的index.jsp网页文件
    RUN chown www.www /data/tomcat/ -R
    
    #给www用户授权/apps下的tomcat目录权限,我们需要www用户来启动tomcat服务
    RUN chown www.www /apps/tomcat -R
    ​
    #给www用户授权/apps下的apache-tomcat-9.0.37目录权限,因为他是一个软连接
    RUN chown www.www /apps/apache-tomcat-9.0.37/ -R
    
    #暴露端口我们需要这两个端口
    EXPOSE 8080 8443
    

    3、编辑tomcat 业务1的构建脚本

    [22:12:21 root@docker tomcat-app1]#vim build-command.sh
    #!/bin/bash
    docker build -t tomcat-web:app1 .
    
    docker build:       #通过docker build 命令制作镜像
    -t:                  #指定新镜像名
    tomcat-web:app1: #新镜像名
    .                     #dockerfile文件在当前目录下           
    

    4、执行构建脚本,开始制作镜像

    #执行制作脚本
    [22:14:16 root@docker tomcat-app1]#bash build-command.sh
    #提示成功镜像制作完成
    Successfully built 2a57fce6c5d6
    
    #tomcat-web:app1镜像制作完成
    [22:14:28 root@docker tomcat-app1]#docker images 
    REPOSITORY                    TAG                 IMAGE ID            CREATED              SIZE
    tomcat-web                    app1                2a57fce6c5d6        About a minute ago   899 MB
    

    5、启动tomcat-web:app1容器

    [23:08:57 root@docker tomcat-app1]#docker run -it -d -p 8080:8080 --name tomcat-web tomcat-web:app1 bash
    
    docker run:         #启动容器
    -it:                #在容器中执行命令
    -d:                 #放到后台运行
    -p 8080:8080:       #容器8080端口映射到宿主机8080端口
    --name tomcat-web:  #容器名为tomcat-web
    tomcat-web:app1:    #通过tomcat-web:app1镜像启动
    bash:               #执行命令
    

    6、进入容器通过www普通用户启动tomcat服务

    #通过bash进入tomcat-web容器
    [23:09:18 root@docker tomcat-app1]#docker exec -it tomcat-web bash
    ​
    #进入容器之后切换www普通用户
    [root@d6444260fcac /]# su www
    ​
    #通过www用去启动tomcat
    [www@d6444260fcac /]$ /apps/tomcat/bin/catalina.sh start
    ​
    #最后退出容器
    

    7、浏览器访问检测
    http://10.0.0.117:8080/WEBserver/


    浏览器访问测试,得出的结果正好是我们自定义web界面的结果,再工作中无非将代码换成公司的代码即可

    范例:APP 2

    1、拷贝dockerfile镜像制作文件以及所需文件
    制作第二个 tomcat 服务镜像。做的二个业务镜像的时候就不用这么复杂了,而是直接将tomcat-app1的目录拷贝到tomcat-app2即可,因为他们所需的文件都差不多

    #回到父目录也就是tomcat目录下
    [12:36:24 root@docker tomcat-app1]#cd ..
    
    #然后将app1 中的所有内容拷贝到tomcat-app2下
    [12:36:29 root@docker tomcat]#cp -r tomcat-app1/* tomcat-app2/
    

    2、修改app2 的web页面
    进入tomcat-app2目录下只需修改index.jsp 即可,因为app2这个业务也是基于 tomcat-basev9.0.37 的基础镜像来制作。和app1的制作过程一样

    #进入app2业务目录
    [12:40:59 root@docker tomcat]#cd tomcat-app2/
    
    #编写web显示页面
    [13:07:12 root@docker tomcat-app2]#vim WEBserver/index.jsp 
    
    app2 tomcat-app2 APP2 22222
    

    3、打包app2 业务的web页面压缩包

    #删除从APP1 业务目录拷贝过来的web压缩包
    [12:42:26 root@docker tomcat-app2]#rm -fr WEBserver.tar.gz 
    
    #进入到app2的web页面目录下
    [12:43:59 root@docker tomcat-app2]#cd WEBserver/
    
    #打包APP2 web页面压缩包
    [12:46:06 root@docker WEBserver]#tar cvzf WEBserver.tar.gz ./*
    
    #将WEBserver.tar.gz压缩移动到 app2业务目录下
    [12:47:10 root@docker WEBserver]#mv WEBserver.tar.gz ../
    

    4、修改构建脚本,区分app2业务的镜像名
    我们的dockerfile文件其实已经不用动了,因为多个tomcat业务都是共用tomact的基础镜像。所以只需修改构建脚本即可,将其新的镜像名改为 app2。

    #回到父目录
    [12:47:17 root@docker WEBserver]#cd ../
    
    #修改镜像构建脚本
    [12:47:26 root@docker tomcat-app2]#vim build-command.sh
    docker build -t tomcat-web:app2 .
    
    docker build:        #制作镜像
    -t:                 #给镜像做一个新名字
    tomcat-web:app2:    #新镜像名为 app2业务
    .                    #dockerfile在当前目录下
    

    5、执行构建镜像脚本,制作新镜像

    #运行脚本
    [12:51:34 root@docker tomcat-app2]#bash build-command.sh
    Successfully built 43a79b360480     #制作成功
    
    #通过查看新镜像已制作完成
    [12:51:44 root@docker tomcat-app2]#docker images 
    REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
    tomcat-web                    app2                43a79b360480        33 seconds ago      914 MB
    

    6、启动app2容器

    #启动容器
    [12:52:16 root@docker tomcat-app2]#docker run -it --name tomcat-app2 -p 8081:8080 -d tomcat-web:app2 bash
    
    docker run:             #运行容器
    -it:                    #对容器执行命令
    --name tomcat-app2:     #容器名为tomcat-app2
    -p 8081:8080:           #将容器的8080端口映射到宿主机的8081端口上
    -d                       #放到后台运行
    tomcat-web:app2:        #使用tomcat-web:app2镜像
    bash:                   #执行bash命令
    
    #进入容器
    [13:10:09 root@docker tomcat-app2]#docker exec -it tomcat-app2 bash
    
    #切换为www用户
    [root@9f78526048af /]# su www
    
    #通过www用户来启动tomcat
    [www@9f78526048af /]$ /apps/tomcat/bin/catalina.sh start
    
    #最后退出容器回到宿主机
    

    7、通过浏览器访问检测
    http://10.0.0.117:8081/WEBserver/


    5.4.3.1.6 修改tomcat容器的启动日志存放到/data/目录下
    #进入tomcat-app2容器
    [13:11:25 root@docker tomcat-app2]#docker exec -it tomcat-app2 bash
    
    #编辑tomcat的日志配置文件
    [root@9f78526048af /]# vim /apps/tomcat/conf/logging.properties
    #找到这一行就该tomcat日志存放路径
    1catalina.org.apache.juli.AsyncFileHandler.directory = /data/tomcat/logs
    
    #创建/data/tomcat/logs文件用来存放tomcat日志
    [root@9f78526048af /]# mkdir /data/tomcat/logs
    
    #给www普通用户授权
    [root@9f78526048af /]# chown www.www /data/tomcat/logs/ -R
    
    #使用www用户重启tomcat服务使其配置文件生效
    [root@9f78526048af /]# su - www -c "/apps/tomcat/bin/catalina.sh start"
    
    #查看日志存放路径已经有了tomcat日志
    [root@9f78526048af /]# ll /data/tomcat/logs/
    total 8
    -rw-r----- 1 www www 7944 Aug  1 05:24 catalina.2020-08-01.log
    
    
    #如果数tomcat起不来一定会在这个日志中打出为什么起不来
    

    总结:
    以上就是针对java服务的镜像构建以及启动方式

    更多文章和资料|点击下方文字直达 ↓↓↓
    阿里云K8s实战手册
    [阿里云CDN排坑指南] (https://mp.weixin.qq.com/s/tedaOubuMo6MjI9d5raclA)
    ECS运维指南
    DevOps实践手册
    Hadoop大数据实战手册
    Knative云原生应用开发指南
    OSS 运维实战手册

    相关文章

      网友评论

          本文标题:基于tomcat基础镜像构建各种业务镜像|范例如APP

          本文链接:https://www.haomeiwen.com/subject/lcvnrktx.html