• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >虚拟化 > Docker自动部署Apache Tomcat的方法

Docker自动部署Apache Tomcat的方法

作者:崔婧雯 字体:[增加 减小] 来源:互联网

本文主要包含Docker自动部署Tomcat,Docker,自动部署等服务器相关知识,崔婧雯 希望可以进行参考

介绍

本文会讲述:

  1. 扩展Tomcat的官方Dockerfile
  2. 构建新的镜像
  3. 从修改过的新镜像启动容器
  4. 在容器里部署RESTful的Web服务并测试

Apache Tomcat

使用docker search可以查到最流行的(和官方的)Docker Tomcat容器:

$ sudo docker search tomcat
[sudo] password for craig: 
NAME                 DESCRIPTION                   STARS   OFFICIAL  AUTOMATED
tomcat                Apache Tomcat is an open source implementa...  103    [OK]    
tutum/tomcat             Tomcat image - listens in port 8080. For t...  38          [OK]
consol/tomcat-7.0           Tomcat 7.0.57, 8080, "admin/admin"       12          [OK]
consol/tomcat-8.0           Tomcat 8.0.15, 8080, "admin/admin"       9          [OK]
consol/tomcat-6.0           Tomcat 6.0.43, 8080, "admin/admin"       6          [OK]
consol/tomcat-4.1           Tomcat 4.1.40, 8080, "admin/admin"       4          [OK]
consol/tomcat-5.0           Tomcat 5.0.30, 8080, "admin/admin"       4          [OK]
consol/tomcat-5.5           Tomcat 5.5.36, 8080, "admin/admin"       4          [OK]
consol/tomcat-3.3           Tomcat 3.3.2, 8080, "admin/admin"        4          [OK]
readytalk/tomcat-native        Debian backed Tomcat + Tomcat Native Library  3          [OK]
malderhout/tomcat           Tomcat7 with OpenJDK7 on CentOS7        3          [OK]
dordoka/tomcat            Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 ba...  3          [OK]
meirwa/spring-boot-tomcat-mysql-app  a sample spring-boot app using tomcat and ...  2          [OK]
h2000/docker-tomcat-youtrack     Dockerfile for youtrack to run under tomcat.  1          [OK]
nicescale/tomcat           Tomcat service for NiceScale. http://nices...  1          [OK]
dmean/liferay-tomcat         Debian + Liferay CE Tomcat           1          [OK]
atomi/tomcat                                     0          [OK]
mminke/apache-tomcat         A Docker image which contains the Apache T...  0          [OK]
ericogr/tomcat            Tomcat 8.0.21, 8080, "docker/docker"      0          [OK]
holmes/tomcat                                     0          [OK]
paulkling/tomcat                                   0          [OK]
dynamind/tomcat                                    0          [OK]
fabric8/tomcat-8.0          runs Apache Tomcat 8.0 with jolokia enable...  0          [OK]
learninglayers/tomcat                                 0          [OK]
dmglab/tomcat             CentOS 7 based tomcat installation       0          [OK]

官方网站描述了所支持的标签:

我正在用的是版本7,所以选择了tomcat:7。

我是使用Docker的新手(在写这边文章的时候),因此不想称此文是“最佳实践”。本文所写的是我认为好用的实践,如果有不同意见也请告诉我。对于每一个想要启动的Docker容器,我都创建了自己的Dockerfile并且扩展了镜像。当然也完全可以不扩展镜像,而直接使用它。不过基于目标镜像构建我们自己的镜像应该是能稳定扩展别人工作成果的更合适的方式。

本文示例中,创建了一个简单的Dockerfile,如下:

FROM tomcat:7-jre7
MAINTAINER "Craig Trim <craigtrim@gmail.com>"

用如下命令构建镜像:

$ sudo docker build -t craig/tomcat .

这样扩展的一个好处是简化了环境。最终,我要为Eclipse、MySQL和其它应用使用容器。我会给每个应用一个简化的命名空间和镜像名称。做项目的时候,我推荐使用项目的代码名称作为容器的命名空间。我也简化了标签名称。这些都是很小的注意事项,不过又很重要。在大型项目中,有很多开发人员参与,这样的方式就会很有帮助。通用的命名空间,简化的镜像名称和标签,会帮助项目成员更方便得使用官方项目镜像。

我的示例如下:

tomcat:7-jre7  ns/tomcat
mysql:5.6.23  ns/mysql
fgrehm/eclipse:v4.4.1  ns/eclipse

ns代表命名空间,每个项目成员都能理解。启动容器只需要记住项目代码名(命名空间)和应用名称即可。

运行Tomcat

如下命令会运行Tomcat,并将容器的8080端口暴露到宿主机器的8080端口:

$ sudo docker run -p 8080:8080 craig/tomcat

如果还需要从这个镜像启动容器,只需要:

$ sudo docker run -p 8081:8080 craig/tomcat

测试tomcat已经启动:

扩展Dockerfile

我需要扩展Dockerfile,来实现Maven的自动部署。需要添加settings.xml,更新tomcat-user.xml文件。如下所示:

tomcat-users.xml:

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="craig" password="password" roles="manager,manager-gui,manager-script" />
</tomcat-users>

settings.xml:

<?xml version="1.0" encoding="UTF-8"?>
<settings>
<servers> 
<server>
<id>TomcatServer</id>
<username>craig</username>
<password>password</password>
</server> 
</servers>

这些文件和Dockerfile放在同一个目录下。

Dockerfile更新为:

FROM tomcat:7-jre7

MAINTAINER "Craig Trim <craigtrim@gmail.com>"

ADD settings.xml /usr/local/tomcat/conf/
ADD tomcat-users.xml /usr/local/tomcat/conf/

当镜像构建时,配置文件会被放置到正确目录下。从这个镜像启动的任意容器都会包含这些文件。

重构镜像

用之前的方法重新构建镜像:

$ sudo docker build -t craig/tomcat .
Sending build context to Docker daemon 5.632 kB
Sending build context to Docker daemon 
Step 0 : FROM tomcat:7-jre7
---> 77eb038c09d1
Step 1 : MAINTAINER "Craig Trim <craigtrim@gmail.com>"
---> Using cache
---> cadc51a3054c
Step 2 : ADD settings.xml /usr/local/tomcat/conf/
---> Using cache
---> 5009ba884f1f
Step 3 : ADD tomcat-users.xml /usr/local/tomcat/conf/
---> Using cache
---> 33917c541bb5
Successfully built 33917c541bb5

可以查看镜像历史:

$ sudo docker history craig/tomcat
IMAGE        CREATED       CREATED BY                   SIZE
33917c541bb5    4 hours ago     /bin/sh -c #(nop) ADD file:c1d08c42d5808537b4  1.761 kB
5009ba884f1f    4 hours ago     /bin/sh -c #(nop) ADD file:5dd8f0f6d0cd64de3c  212 B
cadc51a3054c    4 hours ago     /bin/sh -c #(nop) MAINTAINER "Craig Trim <cra  0 B
77eb038c09d1    3 weeks ago     /bin/sh -c #(nop) CMD [catalina.sh run]     0 B
a96609fc8364    3 weeks ago     /bin/sh -c #(nop) EXPOSE map[8080/tcp:{}]    0 B
ca99125fbf51    3 weeks ago     /bin/sh -c curl -SL "$TOMCAT_TGZ_URL" -o tomc  13.63 MB
e7ca14a4280a    3 weeks ago     /bin/sh -c #(nop) ENV TOMCAT_TGZ_URL=https://  0 B
eac866e259d8    3 weeks ago     /bin/sh -c #(nop) ENV TOMCAT_VERSION=7.0.59   0 B
d391d657b53a    3 weeks ago     /bin/sh -c #(nop) ENV TOMCAT_MAJOR=7      0 B
7b323fd1e0d3    3 weeks ago     /bin/sh -c gpg --keyserver pool.sks-keyserver  113.9 kB
4412b8a11fb6    3 weeks ago     /bin/sh -c #(nop) WORKDIR /usr/local/tomcat   0 B
b4ec9d590927    3 weeks ago     /bin/sh -c mkdir -p "$CATALINA_HOME"      0 B
681b802059fe    3 weeks ago     /bin/sh -c #(nop) ENV PATH=/usr/local/tomcat/  0 B
11b245da4142    3 weeks ago     /bin/sh -c #(nop) ENV CATALINA_HOME=/usr/loca  0 B
44faa7b2809f    3 weeks ago     /bin/sh -c apt-get update && apt-get install  164.5 MB
42c3653e1b26    3 weeks ago     /bin/sh -c #(nop) ENV JAVA_DEBIAN_VERSION=7u7  0 B
4
  


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Docker自动部署Apache Tomcat的方法

相关文章

  • Docker安装方法与Docker四种网络模式详解
  • docker 限制容器对CPU的使用
  • OpenStack之虚机热迁移的代码详细解析
  • 使用VMware 15 安装虚拟机和使用CentOS 8的步骤详解
  • docker容器里安装ssh的具体步骤
  • 浅谈Spark RDD API中的Map和Reduce
  • 详解docker pull 下来的镜像文件存放的位置
  • kvm虚拟机的创建与克隆操作方法
  • OpenStack 工作流workflows使用原理详细介绍
  • 详解给Ocelot做一个Docker镜像

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • virtualbox win7 iis 由于扩展配置问题而无法提供您请求的页面
    • 详解VMware12使用三台虚拟机Ubuntu16.04系统搭建hadoop-2.7.1+hbase-1.2.4(完全分布式)
    • Docker Base Image自己创建具体实现
    • Docker容器内不能联网的6种解决方案
    • 详解Centos7 下建立 Docker 桥接网络
    • 图像特征知识结构,图像特征结构
    • 关于Docker的基础概念分享
    • 浅析Docker镜像分层的注意事项
    • Docker快速入门以及环境配置详解
    • Ubuntu15.10安装docker和docker-compose教程

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有