Docker运行Web服务实战之Tomcat的详细过程

 更新时间:2022年08月22日 14:53:22   作者:小鹏linux  
Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和Java Server Page(JSP)的支持,这篇文章主要介绍了Docker运行Web服务实战之Tomcat的详细过程,需要的朋友可以参考下

1. 关于Tomcat

Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和Java Server Page(JSP)的支持。同时,它提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。由于Tomcat本身也内含了一个HTTP服务器,也可以当作一个单独的Web服务器来使用。下面介绍如何定制Tomcat镜像。

首先,尝试在Docker Hub上搜索已有的Tomcat相关镜像的个数:

$ docker search tomcat | wc -l 
285

可以看到,已经有285个相关镜像。如是个人开发或测试,可以随意选择一个镜像,按照提示启动应用即可。

下面以Tomcat 7.0为例介绍定制Tomcat镜像的步骤。

2. 准备工作

创建tomcat7.0_jdk1.6文件夹,从www.oracle.com网站上下载sun_jdk1.6压缩包,解压为jdk目录

创建Dockerfile和run.sh文件:

$ mkdir tomcat7.0_jdk1.6 
$ cd tomcat7.0_jdk1.6/ 
$ touch Dockerfile run.sh

下载Tomcat,可以到官方网站下载最新的版本,也可以直接使用下面链接中给出的版本:

$ wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.56/bin/apache-tomcat- 7.0.56.zip

解压后,tomcat7.0_jdk1.6目录结构应如下所示(多余的压缩包文件已经被删除):

$ ls 
Dockerfile apache-tomcat-7.0.56 jdk run.sh

3.Dockerfile文件和其他脚本文件

Dockerfile文件内容如下:

FROM sshd:Dockerfile
#设置继承自用户创建的sshd镜像
MAINTAINER docker_user (user@docker.com)
#下面是一些创建者的基本信息
#设置环境变量,所有操作都是非交互式的
ENV DEBIAN_FRONTEND noninteractive
#注意这里要更改系统的时区设置
RUN echo "Asia/Shanghai" > /etc/timezone && \ dpkg-reconfigure -f noninteractive tzdata
#安装跟tomcat用户认证相关的软件
RUN apt-get install -yq --no-install-recommends wget pwgen ca-certificates && \ apt-get clean && \ rm -rf /var/lib/apt/lists/*
#设置tomcat的环境变量,若读者有其他的环境变量需要设置,也可以在这里添加。
ENV CATALINA_HOME /tomcat 
ENV JAVA_HOME /jdk
#复制tomcat和jdk文件到镜像中
ADD apache-tomcat-7.0.56 /tomcat 
ADD jdk /jdk 
ADD create_tomcat_admin_user.sh /create_tomcat_admin_user.sh 
ADD run.sh /run.sh 
RUN chmod +x /*.sh 
RUN chmod +x /tomcat/bin/*.sh
EXPOSE 8080 
CMD ["/run.sh"]

创建tomcat用户和密码脚本文件create_tomcat_admin_user.sh文件,内容为:

#!/bin/bash
if [ -f /.tomcat_admin_created ]; then
    echo "Tomcat 'admin' user already created" 
    exit 0
fi
#generate password 
PASS=${TOMCAT_PASS:-$(pwgen -s 12 1)} 
_word=$( [ ${TOMCAT_PASS} ] && echo "preset" || echo "random" ) 
echo "=> Creating and admin user with a ${_word} password in Tomcat" 
sed -i -r 's/<\/tomcat-users>//' ${CATALINA_HOME}/conf/tomcat-users.xml 
echo '<role rolename="manager-gui"/>' >> ${CATALINA_HOME}/conf/tomcat-users.xml 
echo '<role rolename="manager-script"/>' >> ${CATALINA_HOME}/conf/tomcat-users.xml 
echo '<role rolename="manager-jmx"/>' >> ${CATALINA_HOME}/conf/tomcat-users.xml 
echo '<role rolename="admin-gui"/>' >> ${CATALINA_HOME}/conf/tomcat-users.xml 
echo '<role rolename="admin-script"/>' >> ${CATALINA_HOME}/conf/tomcat-users.xml 
echo "<user username=\"admin\" password=\"${PASS}\" roles=\"manager-gui,manager- script,manager-jmx,admin-gui, admin-script\"/>" >> ${CATALINA_HOME}/conf/ tomcat-users.xml echo '</tomcat-users>' >> ${CATALINA_HOME}/conf/tomcat-users.xml
echo "=> Done!" touch /.tomcat_admin_created 
echo "========================================================================" 
echo "You can now configure to this Tomcat server using:" echo "" 
echo " admin:${PASS}" echo "" 
echo "========================================================================"

编写run.sh脚本文件,内容为:

#!/bin/bash 
if [ ! -f /.tomcat_admin_created ]; then 
    /create_tomcat_admin_user.sh 
fi
/usr/sbin/sshd -D & 
exec ${CATALINA_HOME}/bin/catalina.sh run

4. 创建和测试镜像

通过下面的命令创建镜像tomcat7.0:jdk1.6:

$ docker build -t tomcat7.0:jdk1.6 .

启动一个tomcat容器进行测试:

$ docker run -d -P tomcat7.0:jdk1.6 3cd4238cb32a713a3a1c29d93fbfc80cba150653b5eb8bd7629bee957e7378ed

通过docker logs得到tomcat的密码aBwN0CNCPckw:

$ docker logs 3cd 
=> Creating and admin user with a random password in Tomcat 
=> Done! ======================================================================== 
You can now configure to this Tomcat server using: 
    admin:aBwN0CNCPckw

查看映射的端口信息:

$ docker ps 
CONTAINER ID     IMAGE     COMMAND     CREATED     STATUS     PORTS     NAMES 
3cd4238cb32a tomcat7.0:jdk1.6 "/run.sh" 4 seconds ago Up 3 seconds 0.0.0.0:49157->22/tcp, 0.0.0.0:49158->8080/tcp cranky_wright

在本地使用浏览器登录Tomcat管理界面,访问本地的49158端口,即 http://127.0.0.1:49158 ,如图

输入从docker logs中得到的密码,如图所示。

成功进入管理界面,如图

在生产环境中,可以通过使用-v参数来挂载Tomcat的日志文件、程序所在目录、以及与Tomcat相关的配置。

到此这篇关于Docker运行Web服务实战之Tomcat的详细过程的文章就介绍到这了,更多相关Docker运行Web服务Tomcat内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker 的java编译环境构建详细介绍

    docker 的java编译环境构建详细介绍

    这篇文章主要介绍了docker 的java编译环境构建详细介绍的相关资料,具有一定的参考价值,需要的朋友可以参考下
    2016-11-11
  • 详解SpringBoot项目docker环境运行时无限重启问题

    详解SpringBoot项目docker环境运行时无限重启问题

    这篇文章主要介绍了详解SpringBoot项目docker环境运行时无限重启问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 简简单单使用Docker部署Confluence

    简简单单使用Docker部署Confluence

    本文使用的环境是docker17版本,重点给大家讲解使用Docker部署Confluence的问题,本文给大家介绍的很好对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-06-06
  • Docker不同宿主机网络打通的操作方案

    Docker不同宿主机网络打通的操作方案

    这篇文章主要介绍了Docker不同宿主机网络打通的方案 ,本方式使用docker Swarm集群的方式创建overlay 网络进行打通,需要的朋友可以参考下
    2024-08-08
  • 详解docker私有仓库搭建与使用实战

    详解docker私有仓库搭建与使用实战

    这篇文章主要介绍了详解docker私有仓库搭建与使用实战,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • docker部署SSM项目(含打包)

    docker部署SSM项目(含打包)

    本文主要介绍了docker部署SSM项目,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-05-05
  • Docker搭建RabbitMq的普通集群和镜像集群的详细操作

    Docker搭建RabbitMq的普通集群和镜像集群的详细操作

    这篇文章主要介绍了Docker搭建RabbitMq的普通集群和镜像集群,我本机是window10,通过docker搭建两个rabbitmq节点,本文给大家介绍的非常详细,需要的朋友可以参考下
    2021-11-11
  • docker run之后状态总是Exited

    docker run之后状态总是Exited

    这篇文章主要介绍了docker run之后状态总是Exited,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Docker安装运行SRS的过程记录

    Docker安装运行SRS的过程记录

    SRS定位是运营级的互联网直播服务器集群,追求更好的概念完整性和最简单实现的代码,本文给大家介绍下Docker安装运行SRS的过程,感兴趣的朋友跟随小编一起看看吧
    2022-04-04
  • Dockerfile基础分享

    Dockerfile基础分享

    在Docker中,构建一个自定义镜像共有两种方法,一是通过commit指令构建,二是通过Dockerfile文件构建。今天我们主要来详细探讨下Dockerfile的一些基础。
    2017-01-01

最新评论