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

[经验分享] 在Docker容器中部署Web应用

[复制链接]

尚未签到

发表于 2015-12-25 08:36:03 | 显示全部楼层 |阅读模式
在Docker容器中部署Web应用
[日期:2015-02-05]来源:Linux社区  作者:nuccch[字体:大 中 小]



本文直接讲解如何在Docker容器中实战部署一个Web应用程序,关于Docker相关的概念和如何安装Docker请参考相关资料完成。
第一步:工具准备
  演示如何在Docker容器中部署一个Java Web应用程序,需要准备的软件工具包括:jre,tomcat和webapp应用。另外,为了实现在容器启动时自动启动webapp,需要编写一个脚本工具完成该工作。
  安装jre,请参考
  Ubuntu 12.04下安装JDK1.7 http://www.iyunv.com/Linux/2012-06/62239.htm
  Ubuntu 14.04 LTS安装Oracle JDK 1.8  http://www.iyunv.com/Linux/2014-11/109216.htm
  CentOS6.3安装JDK和环境配置 http://www.iyunv.com/Linux/2012-09/70780.htm
  Ubuntu 14.04 安装 JDK8  http://www.iyunv.com/Linux/2014-09/106218.htm
  Ubuntu下安装JDK图文解析 http://www.iyunv.com/Linux/2014-09/107291.htm
  安装Tomcat,请参考
  CentOS 64-bit下安装JDK和Tomcat并设置Tomcat开机启动操作步骤  http://www.iyunv.com/Linux/2015-01/111485.htm
  Linux(CentOS)下安装 JDK与Tomcat  http://www.iyunv.com/Linux/2015-01/111119.htm
  如何在Tomcat中部署webapp,请参考:
  http://tomcat.apache.org/tomcat-7.0-doc/deployer-howto.html
  http://www.iyunv.com/Linux/2015-02/112887.htm
  jre1.8.0_31.tar.gz  // 可以选择其他版本
  apache-tomcat-6.0.35.tar.gz // 可以选择其他版本
  MyWeb.war // 自己写一个web应用即可,才发现csdn不允许上传附件
  start_tomcat.sh
第二步:制作镜像
  通过编写Dockerfile的方式制作镜像。
  需要在Dockerfile中完成如下几项工作:
  (1)安装jre
  (2)安装tomcat,并完成在tomcat中部署web应用的基本配置(为实现此功能:在制作镜像之前直接先完成tomcat的基础配置,然后直接拷贝到镜像中即可)。
  (3)对外开发8080端口(具体的端口值可以根据实际Tomcat配置参数为准)。
  $mkdir docker
  $cd docker
  $mkdir webapps
  $cp jre1.8.0_31.tar.gz .
  $tar xzvf jre1.8.0_31.tar.gz
  $cp apache-tomcat-6.0.35.tar.gz
  $tar xzvf apache-tomcat-6.0.35.tar.gz
  $cp MyWeb.war ./webapps/
  $vim apache-tomcat-6.0.35/conf/server.xml
  编辑tomcat配置文件:server.xml,在节点中添加如下配置:,配置片段如下所示:
  
  
    
    
  
    
    
    
  
  
  $vim start_tomcat.sh
  
  #!/bin/bash
  
  #Date: 2015/02/02
  #Desc:
  #      Start tomcat with docker containerstart.
  
  echo "Start Tomcat ..."
  
  # Export java path
  export PATH=$PATH:/usr/local/java/bin
  # Display container ipaddress
  ifconfig
  # Start tomcat
  bash /usr/local/tomcat/bin/catalina.sh run
  注意:启动tomcat时必须通过$TOMCAT_HOME/bin/catalina.sh实现,不能使用$TOMCAT_HOME/bin/startup.sh启动,否则脚本执行后容器立刻就退出了。
编写Dockerfile
  #Build java web app container image
  FROM docker.cn/docker/ubuntu:14.04
  MAINTAINER chenchanghui
  #Make java and tomcat install directory
  RUN mkdir /usr/local/java
  RUN mkdir /usr/local/tomcat
  #Copy jre and tomcat into image
  ADD jre1.8.0_31 /usr/local/java/
  ADD apache-tomcat-6.0.35 /usr/local/tomcat/
  ADD start_tomcat.sh start_tomcat.sh
  #Expose http port
  EXPOSE 8080
创建镜像
  $sudo docker build -t=”ubuntu/myweb:tomcat”.
  
  Sendingbuild context to Docker daemon 270.6 MB
  Sendingbuild context to Docker daemon
  Step 0 :FROM docker.cn/docker/ubuntu:14.04
  ---> b39b81afc8ca
  Step 1 :MAINTAINER chenchanghui
  ---> Running in cd9ba3324dae
  ---> ab45c422bdf5
  Removingintermediate container cd9ba3324dae
  Step 2 :RUN mkdir /usr/local/java
  ---> Running in f640de521691
  ---> bd94048cb633
  Removingintermediate container f640de521691
  Step 3 :RUN mkdir /usr/local/tomcat
  ---> Running in de4a392ec89d
  ---> 956ac99b8bec
  Removingintermediate container de4a392ec89d
  Step 4 :ADD jre1.8.0_31 /usr/local/java/
  ---> e3181a61f635
  Removingintermediate container b69c147f28fe
  Step 5 :ADD apache-tomcat-6.0.35 /usr/local/tomcat/
  ---> 9169a4ab9a80
  Removingintermediate container c190162d7a5c
  Step 6 :ADD start_tomcat.sh start_tomcat.sh
  ---> cf61f83dc0b0
  Removingintermediate container 3f10c2a9e374
  Step 7 :EXPOSE 8080
  --->abea02c999a2
  Removingintermediate container a3841acba123
  Successfullybuilt abea02c999a2
  
第三部:启动容器
  webapp通过数据卷挂在到容器中进行部署,不需要拷贝到镜像中。
  $sudo docker run -t -i --name tomcat –v /home/$username/docker/webapps:/webapps/
  ubuntu/myweb:tomcat /bin/bash/start_tomcat.sh
  
  Start Tomcat ...
  eth0     Link encap:Ethernet  HWaddr02:42:ac:11:00:0c
  inet addr:172.17.0.12 Bcast:0.0.0.0  Mask:255.255.0.0
  ……..
  Feb 02, 2015 1:38:42 PMorg.apache.catalina.core.AprLifecycleListener init
  INFO: The APR based Apache Tomcat Nativelibrary which allows optimal performance in production environments was notfound on the java.library.path:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
  Feb 02, 2015 1:38:42 PMorg.apache.coyote.http11.Http11Protocol init
  INFO: Initializing Coyote HTTP/1.1 onhttp-8080
  Feb 02, 2015 1:38:42 PMorg.apache.catalina.startup.Catalina load
  INFO: Initialization processed in 788 ms
  Feb 02, 2015 1:38:42 PMorg.apache.catalina.core.StandardService start
  INFO: Starting service Catalina
  Feb 02, 2015 1:38:42 PM org.apache.catalina.core.StandardEnginestart
  INFO: Starting Servlet Engine: ApacheTomcat/6.0.35
  Feb 02, 2015 1:38:42 PMorg.apache.catalina.startup.HostConfig deployDirectory
  INFO: Deploying web application directorymanager
  Feb 02, 2015 1:38:42 PM org.apache.catalina.startup.HostConfigdeployDirectory
  INFO: Deploying web application directorydocs
  Feb 02, 2015 1:38:42 PMorg.apache.catalina.startup.HostConfig deployDirectory
  INFO: Deploying web application directoryROOT
  Feb 02, 2015 1:38:42 PM org.apache.catalina.startup.HostConfigdeployDirectory
  INFO: Deploying web application directoryexamples
  Feb 02, 2015 1:38:43 PMorg.apache.catalina.startup.HostConfig deployDirectory
  INFO: Deploying web application directoryhost-manager
  Feb 02, 2015 1:38:43 PM org.apache.coyote.http11.Http11Protocolstart
  INFO: Starting Coyote HTTP/1.1 on http-8080
  Feb 02, 2015 1:38:43 PMorg.apache.jk.common.ChannelSocket init
  INFO: JK: ajp13 listening on /0.0.0.0:8009
  Feb 02, 2015 1:38:43 PMorg.apache.jk.server.JkMain start
  INFO: Jk running ID=0 time=0/27  config=null
  Feb 02, 2015 1:38:43 PMorg.apache.catalina.startup.Catalina start
  INFO: Server startup in 842 ms
  如日志所示,Docker容器已经启动,并且其中安装的tomcat已经成功启动。
  访问:http://172.17.0.12:8080/myweb/,Everything is ok!
  小技巧:启动容器时带参数-t -i和不带参数的区别:带参数-t -i时可以通过Ctrl+C停止容器运行,不带参数-t -i启动时,停止容器只能通过命令:$sudo docker stop $containerid实现。
  CentOS 6/7系列安装Docker http://www.iyunv.com/Linux/2014-07/104768.htm
  Docker的搭建Gitlab CI 全过程详解 http://www.iyunv.com/Linux/2013-12/93537.htm
  Docker安装应用(CentOS 6.5_x64) http://www.iyunv.com/Linux/2014-07/104595.htm
  在 Docker 中使用 MySQL http://www.iyunv.com/Linux/2014-01/95354.htm
  在Ubuntu Trusty 14.04 (LTS) (64-bit)安装Docker http://www.iyunv.com/Linux/2014-10/108184.htm
  Docker安装应用(CentOS 6.5_x64) http://www.iyunv.com/Linux/2014-07/104595.htm
  Ubuntu 14.04安装Docker  http://www.iyunv.com/linux/2014-08/105656.htm
  阿里云CentOS 6.5 模板上安装 Docker http://www.iyunv.com/Linux/2014-11/109107.htm
  Docker 的详细介绍:请点这里
Docker 的下载地址:请点这里
  本文永久更新链接地址:http://www.iyunv.com/Linux/2015-02/112889.htm

运维网声明 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-155922-1-1.html 上篇帖子: 在Docker容器之间拷贝数据:原理与操作示例 下篇帖子: Ubuntu Docker介绍与安装使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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