设为首页 收藏本站
查看: 628|回复: 0

[经验分享] 【系列4】使用Dockerfile创建带tomcat的Centos Docker镜像

[复制链接]

尚未签到

发表于 2018-12-1 07:37:44 | 显示全部楼层 |阅读模式
  Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下普遍使用,是开发和调试JSP程序的首选。
    Tomcat最初是Sun的软件架构师詹姆斯.邓肯.戴维森开发的。后来在他的帮助下Tomcat成为开源项目,并由Sun贡献给Apache软件基金会。
    当配置正确时,Apache为HTML页面服务,而Tomcat实际上运行JSP页面和Servlet。另外,Tomcat和IIS等web服务器一样,具有处理HTML页面的功能(但处理静态HTML的能力不如Apache),另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。
  ① 设计Tomcat的Dockerfile
  首先,尝试在Dockerhub上搜索Tomcat相关镜像的个数:
[root@docker1 ~]# docker search tomcat |wc -l
26
可以看到,已经有26个相关镜像。如果是个人开发或测试,可以随意选择一个镜像,按照提示启动应用即可。
若准备在生产环境中使用,这些镜像都不是那么合适了。原因有三个方面:
     ◆ 项目需要的Tomcat版本可能不同
     ◆ 项目需要的Tomcat变量不一致
     ◆ 项目需要的JDK可能不一致
     
  ② 因此,比较好的方式应该是由架构师通过Dockerfile或者其他方式构建好统一的镜像,然后分发给项目组成员来进行。
    下面以sun_jdk 1.6、tomcat 7.0、centos 7.4为诶环境介绍如何定制自己的tomcat镜像。
  (1)准备工作:
  创建tomcat7.0_jdk1.6文件夹,从www.oracle.com上下载sun_jdk 1.6压缩包,解压为jdk目录。
  创建Dockerfile和run.sh文件
[root@docker1 ~]# mkdir tomcat7.0_jdk1.6
[root@docker1 ~]# cd tomcat7.0_jdk1.6/
[root@docker1 tomcat7.0_jdk1.6]# touch Dockerfile run.sh
[root@docker1 tomcat7.0_jdk1.6]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.82/bin/apache-tomcat-7.0.82.zip
--2017-11-27 22:31:47--  https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.82/bin/apache-tomcat-7.0.82.zip
Resolving mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)... 101.6.6.178, 2402:f000:1:416:101:6:6:177
Connecting to mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.6.178|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 9588812 (9.1M) [application/zip]
Saving to: ‘apache-tomcat-7.0.82.zip’

100%[================================================================================================================>] 9,588,812   3.38MB/s   in 2.7s   

2017-11-27 22:31:50 (3.38 MB/s) - ‘apache-tomcat-7.0.82.zip’ saved [9588812/9588812]
解压后,tomcat7.0_jdk1.6目录底下应如下所示(多余的压缩包已经被删除):
[root@docker1 tomcat7.0_jdk1.6]# tar -xf apache-tomcat-7.0.82.zip
  [root@docker1 tomcat7.0_jdk1.6]# rz -y                  #上传jdk-6u45-linux-x64.bin包
[root@docker1 tomcat7.0_jdk1.6]# chmod 755 jdk-6u45-linux-x64.bin
[root@docker1 tomcat7.0_jdk1.6]# ./jdk-6u45-linux-x64.bin
[root@docker1 tomcat7.0_jdk1.6]# ls
apache-tomcat-7.0.82  apache-tomcat-7.0.82.zip Dockerfile  jdk1.6.0_45  jdk-6u45-linux-x64.bin  jdk-6u45-linux-x64.zip  run.sh
[root@docker1 tomcat7.0_jdk1.6]# rm -f jdk-6u45-linux-x64.bin jdk-6u45-linux-x64.zip apache-tomcat-7.0.82.zip
[root@docker1 tomcat7.0_jdk1.6]# ls
apache-tomcat-7.0.82  Dockerfile  jdk1.6.0_45  run.sh
  (2)编写Dockerfile文件
  #设置继承来自镜像
  FROM docker.io/centos:latest
  #下面是一些创建这的基本信息
  MAINTAINER waitfish from dockerpool.com
  #设置环境变量,所以操作都是非交互式的
  ENV DEBIAN_FRONTEND noninteractive
  RUN echo "Asia/Shanghai" > /etc/timezone
  #注意这里要更改系统的时区设置,因为在Web应用中经常会用到时区这个系统变量,默认的centos会让你的应用程序发生不可思议的效果
  #设置tomcat对的环境变量,若读者有其他的环境变量需要设置,也可以在这里添加:
  ENV CATALINA_HOME /tomcat
  ENV JAVA_HOME /jdk
  #复制tomcat和jdk文件到镜像中
  ADD apache-tomcat-7.0.82 /tomcat
  ADD jdk1.6.0_45 /jdk
  #复制启动脚本至镜像,并赋予脚本可执行权限
  ADD run.sh /run.sh
  RUN chmod +x /*.sh
  RUN chmod +x /tomcat/bin/*.sh
  #我的tomcat接口,默认为8080
  EXPOSE 8080
  #设置自启动命令
  CMD ["/run.sh"]
  (3)编写Dockerfile文件
  [root@docker1 tomcat7.0_jdk1.6]# cat run.sh
  #!/bin/bash
  # 启动tomcat
  exec ${CATALINA_HOME}/bin/catalina.sh run
  #启动startup.sh
  #catalina.sh是调试模式
  (4)建立tomcat7.0:jdk1.6镜像
  [root@docker1 tomcat7.0_jdk1.6]# docker build -t tomcat7.0:jdk1.6 .
  [root@docker1 tomcat7.0_jdk1.6]# docker images
  REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
  tomcat7.0           jdk1.6              581265694089        6 seconds ago       439.8 MB
  ......
  (5)启动一个tomcat容器进行测试
  [root@docker1 tomcat7.0_jdk1.6]# docker run -d -P tomcat7.0:jdk1.6
  ac6d662434ffb9435740d0f452599e12349903f4387775155f0d7e057eac6a33
  (6)查看映射的端口信息:
[root@docker1 tomcat7.0_jdk1.6]# docker ps
CONTAINER ID   IMAGE         COMMAND     CREATED       STATUS         PORTS              NAMES
ac6d662434ff tomcat7.0:jdk1.6  "/run.sh"     21 minutes ago  Up 21 minutes  0.0.0.0:32820->8080/tcp    thirsty_montalcini
  (7)在本地使用浏览器登录Tomcat管理界面,访问10.0.0.10:32820,如下图所示:

  ******************************************************************************************************************************************
  ******************************************************************************************************************************************
  tomcat设置密码登录,参考 http://blog.运维网.com/sf1314/2048121 centos 使用 pwgen 生成高强度密码
  (1)更改Dockerfile配置文件
  [root@docker1 tomcat7.0_jdk1.6]# cat Dockerfile
  #设置继承来自镜像
  FROM docker.io/centos:latest
  #下面是一些创建这的基本信息
  MAINTAINER waitfish from dockerpool.com
  #设置环境变量,所以操作都是非交互式的
  ENV DEBIAN_FRONTEND noninteractive
  RUN echo "Asia/Shanghai" > /etc/timezone
  #注意这里要更改系统的时区设置,因为在Web应用中经常会用到时区这个系统变量,默认的centos会让你的应用程序发生不可思议的效果
  #安装跟tomcat用户认证相关的软件> ${CATALINA_HOME}/conf/tomcat-users.xml
  echo '' >> ${CATALINA_HOME}/conf/tomcat-users.xml
  echo '' >> ${CATALINA_HOME}/conf/tomcat-users.xml
  echo '' >> ${CATALINA_HOME}/conf/tomcat-users.xml
  echo '' >> ${CATALINA_HOME}/conf/tomcat-users.xml
  echo "" >> ${CATALINA_HOME}/conf/tomcat-users.xml
  echo '' >> ${CATALINA_HOME}/conf/tomcat-users.xml
  echo "=> Done!"
  touch /.tomcat_admin_created
  echo "===================================================="
  echo "You can now configure to this Tomcat serrver using:"
  echo ""
  echo "   admin:${PASS}"
  echo ""
  echo "===================================================="
  *********************************************************************************************
  附件:
  
apache-tomcat-7.0.82   
http://down.运维网.com/data/2368971   
  
jdk-6u45-linux-x64.bin http://down.运维网.com/data/2369015

  
pwgen-2.08.tar      http://down.运维网.com/data/2369589





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-641742-1-1.html 上篇帖子: 基于Tomcat5.0和Axis2开发Web Service代码详解 下篇帖子: tomcat安全及性能调整
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表