经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Docker » 查看文章
Docker运行Web服务实战之Tomcat的详细过程
来源:jb51  时间:2022/8/22 16:17:31  对本文有异议

1. 关于Tomcat

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

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

  1. $ docker search tomcat | wc -l
  2. 285

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

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

2. 准备工作

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

创建Dockerfile和run.sh文件:

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

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

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

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

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

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

Dockerfile文件内容如下:

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

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

  1. #!/bin/bash
  2. if [ -f /.tomcat_admin_created ]; then
  3. echo "Tomcat 'admin' user already created"
  4. exit 0
  5. fi
  6. #generate password
  7. PASS=${TOMCAT_PASS:-$(pwgen -s 12 1)}
  8. _word=$( [ ${TOMCAT_PASS} ] && echo "preset" || echo "random" )
  9. echo "=> Creating and admin user with a ${_word} password in Tomcat"
  10. sed -i -r 's/<\/tomcat-users>//' ${CATALINA_HOME}/conf/tomcat-users.xml
  11. echo '<role rolename="manager-gui"/>' >> ${CATALINA_HOME}/conf/tomcat-users.xml
  12. echo '<role rolename="manager-script"/>' >> ${CATALINA_HOME}/conf/tomcat-users.xml
  13. echo '<role rolename="manager-jmx"/>' >> ${CATALINA_HOME}/conf/tomcat-users.xml
  14. echo '<role rolename="admin-gui"/>' >> ${CATALINA_HOME}/conf/tomcat-users.xml
  15. echo '<role rolename="admin-script"/>' >> ${CATALINA_HOME}/conf/tomcat-users.xml
  16. 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
  17. echo "=> Done!" touch /.tomcat_admin_created
  18. echo "========================================================================"
  19. echo "You can now configure to this Tomcat server using:" echo ""
  20. echo " admin:${PASS}" echo ""
  21. echo "========================================================================"

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

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

4. 创建和测试镜像

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

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

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

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

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

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

查看映射的端口信息:

  1. $ docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 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内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号