阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

在Docker容器中部署Web应用

383次阅读
没有评论

共计 6472 个字符,预计需要花费 17 分钟才能阅读完成。

本文直接讲解如何在 Docker 容器中实战部署一个 Web 应用程序,关于 Docker 相关的概念和如何安装 Docker 请参考相关资料完成。

第一步:工具准备

演示如何在 Docker 容器中部署一个 Java Web 应用程序,需要准备的软件工具包括:jre,tomcat 和 webapp 应用。另外,为了实现在容器启动时自动启动 webapp,需要编写一个脚本工具完成该工作。

安装 jre,请参考

Ubuntu 12.04 下安装 JDK1.7 http://www.linuxidc.com/Linux/2012-06/62239.htm

Ubuntu 14.04 LTS 安装 Oracle JDK 1.8  http://www.linuxidc.com/Linux/2014-11/109216.htm

CentOS6.3 安装 JDK 和环境配置 http://www.linuxidc.com/Linux/2012-09/70780.htm

Ubuntu 14.04 安装 JDK8  http://www.linuxidc.com/Linux/2014-09/106218.htm

Ubuntu 下安装 JDK 图文解析 http://www.linuxidc.com/Linux/2014-09/107291.htm

安装 Tomcat,请参考

CentOS 64-bit 下安装 JDK 和 Tomcat 并设置 Tomcat 开机启动操作步骤  http://www.linuxidc.com/Linux/2015-01/111485.htm

Linux(CentOS) 下安装 JDK 与 Tomcat  http://www.linuxidc.com/Linux/2015-01/111119.htm

如何在 Tomcat 中部署 webapp,请参考:

http://tomcat.apache.org/tomcat-7.0-doc/deployer-howto.html

http://www.linuxidc.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,在 <Host> 节点中添加如下配置:<Context path=”myweb”docBase=”/webapps/MyWeb.war” reloadable=”false”workDir=”/tomcat_work”/>,配置片段如下所示:

<Host name=”localhost”  appBase=”webapps”

     unpackWARs=”true” autoDeploy=”true”

     xmlValidation=”false” xmlNamespaceAware=”false”>

 

  <!– SingleSignOn valve, shareauthentication between web applications

      Documentation at:/docs/config/valve.html –>

  <!–

  <Valve className=”org.apache.catalina.authenticator.SingleSignOn”/>

  –>

 

  <!– Access log processes all example.

      Documentation at:/docs/config/valve.html –>

  <!–

  <ValveclassName=”org.apache.catalina.valves.AccessLogValve”directory=”logs” 

        prefix=”localhost_access_log.” suffix=”.txt”pattern=”common” resolveHosts=”false”/>

  –>

  <Contextpath=“/myweb”docBase=“/webapps/MyWeb.war”reloadable=“false”workDir=“/tomcat_work”/>

</Host>

 

$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<nuccch2010.163.com>

#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 <nuccch2010.163.com>

 —> 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.linuxidc.com/Linux/2014-07/104768.htm

Docker 的搭建 Gitlab CI 全过程详解 http://www.linuxidc.com/Linux/2013-12/93537.htm

Docker 安装应���(CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm

在 Docker 中使用 MySQL http://www.linuxidc.com/Linux/2014-01/95354.htm

在 Ubuntu Trusty 14.04 (LTS) (64-bit) 安装 Docker http://www.linuxidc.com/Linux/2014-10/108184.htm

Docker 安装应用 (CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm

Ubuntu 14.04 安装 Docker  http://www.linuxidc.com/linux/2014-08/105656.htm

阿里云 CentOS 6.5 模板上安装 Docker http://www.linuxidc.com/Linux/2014-11/109107.htm

Docker 的详细介绍 :请点这里
Docker 的下载地址 :请点这里

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计6472字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7997165
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

  免费无广告!这款跨平台 AI RSS 阅读器,拯救你的信息焦虑 在算法推荐主导信息流的时代,我们...
在Windows系统中通过VMware安装苹果macOS15

在Windows系统中通过VMware安装苹果macOS15

在 Windows 系统中通过 VMware 安装苹果 macOS15 许多开发者和爱好者希望在 Window...
CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流! 大家好,我是星哥,今天才思枯竭,不写技术文章了!来吐槽一下 CSDN。...
小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比 星哥玩云,带你从小白到上云高手。今天咱们就来聊聊——什...
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛 NAS 硬件 03:五盘位 +N5105+ 双网口的成品 NAS 值得入手吗 前言 大家好,我...
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...