Dockerfile文件构建tomcat服务(企业实战)

一、tomcat服务介绍

### Tomcat 简介

**Apache Tomcat** 是一个开源的 **Java Servlet** 容器和 **JavaServer Pages (JSP)** 引擎,由 Apache 软件基金会开发和维护。它实现了 Java Servlet 和 JSP 规范,提供了一个运行 Java Web 应用程序的环境。

### 主要功能

1. **Servlet 容器**:
   - 支持 Java Servlet 规范,处理 HTTP 请求并生成响应。

2. **JSP 引擎**:
   - 支持 JavaServer Pages (JSP),允许在 HTML 中嵌入 Java 代码。

3. **Web 服务器**:
   - 提供基本的 Web 服务器功能,如静态内容服务和 SSL/TLS 支持。

4. **轻量级**:
   - 设计简洁,资源占用少,适合中小型应用。

5. **可扩展性**:
   - 支持通过插件和自定义配置进行扩展。

### 核心组件

1. **Catalina**:
   - Servlet 容器,负责处理请求和响应。

2. **Coyote**:
   - HTTP 连接器,处理 HTTP 请求。

3. **Jasper**:
   - JSP 引擎,将 JSP 页面编译为 Servlet。

4. **Cluster**:
   - 提供负载均衡和故障转移功能。

5. **Realm**:
   - 管理用户认证和授权。

### 使用场景

1. **开发环境**:
   - 常用于开发和测试 Java Web 应用。

2. **生产环境**:
   - 适合中小型生产环境,尤其是资源有限的情况。

3. **嵌入式系统**:
   - 可作为嵌入式服务器,集成到其他应用中。

### 安装与配置

1. **下载**:
   - 从 [Apache Tomcat 官网](https://tomcat.apache.org/) 下载最新版本。

2. **安装**:
   - 解压下载的文件,无需复杂安装步骤。

3. **配置**:
   - 通过 `conf/server.xml` 配置端口、连接器等。

4. **启动**:
   - 运行 `bin/startup.sh`(Linux/Mac)或 `bin/startup.bat`(Windows)。

5. **访问**:
   - 启动后,通过 `http://localhost:8080` 访问默认页面。

### 优点

1. **开源免费**:
   - 完全免费,源代码开放。

2. **跨平台**:
   - 支持多种操作系统。

3. **社区支持**:
   - 拥有活跃的社区和丰富的文档。

4. **易于集成**:
   - 可与其他 Apache 项目(如 Apache HTTP Server)集成。

### 缺点

1. **性能限制**:
   - 相比专业服务器(如 JBoss、WebLogic),性能较弱。

2. **功能较少**:
   - 缺少一些高级功能,如分布式事务。

二、实战部署

[root@cjr tomcat8]# ls
apache-tomcat-8.0.26.tar.gz  Centos-vault-8.5.2111.repo  Dockerfile  jdk-8u45-linux-x64.rpm
[root@cjr tomcat8]# cat Dockerfile
FROM centos
MAINTAINER cjr
RUN rm -rf /etc/yum.repos.d/*
COPY ./Centos-vault-8.5.2111.repo /etc/yum.repos.d/
RUN yum install wget -y
COPY jdk-8u45-linux-x64.rpm /usr/local/
ADD apache-tomcat-8.0.26.tar.gz /usr/local/
RUN cd /usr/local && yum install -y jdk-8u45-linux-x64.rpm
RUN mv /usr/local/apache-tomcat-8.0.26 /usr/local/tomcat8
ENTRYPOINT /usr/local/tomcat8/bin/startup.sh && tail -F /usr/local/tomcat8/logs/catalina.out
EXPOSE 8080

[root@cjr tomcat8]# docker build -f Dockerfile -t tomcat8:v1 .
[+] Building 15.8s (13/13) FINISHED                                                 docker:default
 => [internal] load build definition from Dockerfile                                          0.0s
 => => transferring dockerfile: 486B                                                          0.0s
 => [internal] load .dockerignore                                                             0.0s
 => => transferring context: 2B                                                               0.0s
 => [internal] load metadata for docker.io/library/centos:latest                              0.0s
 => [1/8] FROM docker.io/library/centos                                                       0.0s
 => [internal] load build context                                                             0.0s
 => => transferring context: 141B                                                             0.0s
 => CACHED [2/8] RUN rm -rf /etc/yum.repos.d/*                                                0.0s
 => CACHED [3/8] COPY ./Centos-vault-8.5.2111.repo /etc/yum.repos.d/                          0.0s
 => [4/8] RUN yum install wget -y                                                             7.2s
 => [5/8] COPY jdk-8u45-linux-x64.rpm /usr/local/                                             0.2s
 => [6/8] ADD apache-tomcat-8.0.26.tar.gz /usr/local/                                         0.2s
 => [7/8] RUN cd /usr/local && yum install -y jdk-8u45-linux-x64.rpm                          5.0s
 => [8/8] RUN mv /usr/local/apache-tomcat-8.0.26 /usr/local/tomcat8                           1.7s
 => exporting to image                                                                        1.5s
 => => exporting layers                                                                       1.5s
 => => writing image sha256:f49b8351ebf676d9e4e46cef4a01a33623a535d307ea94e7c5ec10f687ed7836  0.0s
 => => naming to docker.io/library/tomcat8:v1                       

三、测试访问

省略了启动镜像的步骤,在前面的文章里面有讲

[root@cjr tomcat8]# docker ps
CONTAINER ID   IMAGE        COMMAND                  CREATED          STATUS          PORTS                                         NAMES
6457fb897b4e   tomcat8:v1   "/bin/sh -c '/usr/lo…"   33 seconds ago   Up 33 seconds   0.0.0.0:32768->8080/tcp, :::32768->8080/tcp   tomcat8
[root@cjr tomcat8]# curl localhost:32768

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <title>Apache Tomcat/8.0.26</title>
        <link href="favicon.ico" rel="icon" type="image/x-icon" />
        <link href="favicon.ico" rel="shortcut icon" type="image/x-icon" />
        <link href="tomcat.css" rel="stylesheet" type="text/css" />
    </head>

    <body>
        <div id="wrapper">
            <div id="navigation" class="curved container">
                <span id="nav-home"><a href="http://tomcat.apache.org/">Home</a></span>
                <span id="nav-hosts"><a href="/docs/">Documentation</a></span>
                <span id="nav-config"><a href="/docs/config/">Configuration</a></span>
                <span id="nav-examples"><a href="/examples/">Examples</a></span>
                <span id="nav-wiki"><a href="http://wiki.apache.org/tomcat/FrontPage">Wiki</a></span>
                <span id="nav-lists"><a href="http://tomcat.apache.org/lists.html">Mailing Lists</a></span>
                <span id="nav-help"><a href="http://tomcat.apache.org/findhelp.html">Find Help</a></span>
                <br class="separator" />
            </div>
            <div id="asf-box">
                <h1>Apache Tomcat/8.0.26</h1>
            </div>
            <div id="upper" class="curved container">
                <div id="congrats" class="curved container">
                    <h2>If you're seeing this, you've successfully installed Tomcat. Congratulations!</h2>
                </div>
                <div id="notice">
                    <img src="tomcat.png" alt="[tomcat logo]" />
                    <div id="tasks">
                        <h3>Recommended Reading:</h3>
                        <h4><a href="/docs/security-howto.html">Security Considerations HOW-TO</a></h4>
                        <h4><a href="/docs/manager-howto.html">Manager Application HOW-TO</a></h4>
                        <h4><a href="/docs/cluster-howto.html">Clustering/Session Replication HOW-TO</a></h4>
                    </div>
                </div>
                <div id="actions">
                    <div class="button">
                        <a class="container shadow" href="/manager/status"><span>Server Status</span></a>
                    </div>
                    <div class="button">
                        <a class="container shadow" href="/manager/html"><span>Manager App</span></a>
                    </div>
                    <div class="button">
                        <a class="container shadow" href="/host-manager/html"><span>Host Manager</span></a>
                    </div>
                </div>
                <!--
                <br class="separator" />
                -->
                <br class="separator" />
            </div>
            <div id="middle" class="curved container">
                <h3>Developer Quick Start</h3>
                <div class="col25">
                    <div class="container">
                        <p><a href="/docs/setup.html">Tomcat Setup</a></p>
                        <p><a href="/docs/appdev/">First Web Application</a></p>
                    </div>
                </div>
                <div class="col25">
                    <div class="container">
                        <p><a href="/docs/realm-howto.html">Realms &amp; AAA</a></p>
                        <p><a href="/docs/jndi-datasource-examples-howto.html">JDBC DataSources</a></p>
                    </div>
                </div>
                <div class="col25">
                    <div class="container">
                        <p><a href="/examples/">Examples</a></p>
                    </div>
                </div>
                <div class="col25">
                    <div class="container">
                        <p><a href="http://wiki.apache.org/tomcat/Specifications">Servlet Specifications</a></p>
                        <p><a href="http://wiki.apache.org/tomcat/TomcatVersions">Tomcat Versions</a></p>
                    </div>
                </div>
                <br class="separator" />
            </div>
            <div id="lower">
                <div id="low-manage" class="">
                    <div class="curved container">
                        <h3>Managing Tomcat</h3>
                        <p>For security, access to the <a href="/manager/html">manager webapp</a> is restricted.
                        Users are defined in:</p>
                        <pre>$CATALINA_HOME/conf/tomcat-users.xml</pre>
                        <p>In Tomcat 8.0 access to the manager application is split between
                           different users. &nbsp; <a href="/docs/manager-howto.html">Read more...</a></p>
                        <br />
                        <h4><a href="/docs/RELEASE-NOTES.txt">Release Notes</a></h4>
                        <h4><a href="/docs/changelog.html">Changelog</a></h4>
                        <h4><a href="http://tomcat.apache.org/migration.html">Migration Guide</a></h4>
                        <h4><a href="http://tomcat.apache.org/security.html">Security Notices</a></h4>
                    </div>
                </div>
                <div id="low-docs" class="">
                    <div class="curved container">
                        <h3>Documentation</h3>
                        <h4><a href="/docs/">Tomcat 8.0 Documentation</a></h4>
                        <h4><a href="/docs/config/">Tomcat 8.0 Configuration</a></h4>
                        <h4><a href="http://wiki.apache.org/tomcat/FrontPage">Tomcat Wiki</a></h4>
                        <p>Find additional important configuration information in:</p>
                        <pre>$CATALINA_HOME/RUNNING.txt</pre>
                        <p>Developers may be interested in:</p>
                        <ul>
                            <li><a href="http://tomcat.apache.org/bugreport.html">Tomcat 8.0 Bug Database</a></li>
                            <li><a href="/docs/api/index.html">Tomcat 8.0 JavaDocs</a></li>
                            <li><a href="http://svn.apache.org/repos/asf/tomcat/tc8.0.x/">Tomcat 8.0 SVN Repository</a></li>
                        </ul>
                    </div>
                </div>
                <div id="low-help" class="">
                    <div class="curved container">
                        <h3>Getting Help</h3>
                        <h4><a href="http://tomcat.apache.org/faq/">FAQ</a> and <a href="http://tomcat.apache.org/lists.html">Mailing Lists</a></h4>
                        <p>The following mailing lists are available:</p>
                        <ul>
                            <li id="list-announce"><strong><a href="http://tomcat.apache.org/lists.html#tomcat-announce">tomcat-announce</a><br />
                                Important announcements, releases, security vulnerability notifications. (Low volume).</strong>
                            </li>
                            <li><a href="http://tomcat.apache.org/lists.html#tomcat-users">tomcat-users</a><br />
                                User support and discussion
                            </li>
                            <li><a href="http://tomcat.apache.org/lists.html#taglibs-user">taglibs-user</a><br />
                                User support and discussion for <a href="http://tomcat.apache.org/taglibs/">Apache Taglibs</a>
                            </li>
                            <li><a href="http://tomcat.apache.org/lists.html#tomcat-dev">tomcat-dev</a><br />
                                Development mailing list, including commit messages
                            </li>
                        </ul>
                    </div>
                </div>
                <br class="separator" />
            </div>
            <div id="footer" class="curved container">
                <div class="col20">
                    <div class="container">
                        <h4>Other Downloads</h4>
                        <ul>
                            <li><a href="http://tomcat.apache.org/download-connectors.cgi">Tomcat Connectors</a></li>
                            <li><a href="http://tomcat.apache.org/download-native.cgi">Tomcat Native</a></li>
                            <li><a href="http://tomcat.apache.org/taglibs/">Taglibs</a></li>
                            <li><a href="/docs/deployer-howto.html">Deployer</a></li>
                        </ul>
                    </div>
                </div>
                <div class="col20">
                    <div class="container">
                        <h4>Other Documentation</h4>
                        <ul>
                            <li><a href="http://tomcat.apache.org/connectors-doc/">Tomcat Connectors</a></li>
                            <li><a href="http://tomcat.apache.org/connectors-doc/">mod_jk Documentation</a></li>
                            <li><a href="http://tomcat.apache.org/native-doc/">Tomcat Native</a></li>
                            <li><a href="/docs/deployer-howto.html">Deployer</a></li>
                        </ul>
                    </div>
                </div>
                <div class="col20">
                    <div class="container">
                        <h4>Get Involved</h4>
                        <ul>
                            <li><a href="http://tomcat.apache.org/getinvolved.html">Overview</a></li>
                            <li><a href="http://tomcat.apache.org/svn.html">SVN Repositories</a></li>
                            <li><a href="http://tomcat.apache.org/lists.html">Mailing Lists</a></li>
                            <li><a href="http://wiki.apache.org/tomcat/FrontPage">Wiki</a></li>
                        </ul>
                    </div>
                </div>
                <div class="col20">
                    <div class="container">
                        <h4>Miscellaneous</h4>
                        <ul>
                            <li><a href="http://tomcat.apache.org/contact.html">Contact</a></li>
                            <li><a href="http://tomcat.apache.org/legal.html">Legal</a></li>
                            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
                            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
                        </ul>
                    </div>
                </div>
                <div class="col20">
                    <div class="container">
                        <h4>Apache Software Foundation</h4>
                        <ul>
                            <li><a href="http://tomcat.apache.org/whoweare.html">Who We Are</a></li>
                            <li><a href="http://tomcat.apache.org/heritage.html">Heritage</a></li>
                            <li><a href="http://www.apache.org">Apache Home</a></li>
                            <li><a href="http://tomcat.apache.org/resources.html">Resources</a></li>
                        </ul>
                    </div>
                </div>
                <br class="separator" />
            </div>
            <p class="copyright">Copyright &copy;1999-2025 Apache Software Foundation.  All Rights Reserved</p>
        </div>
    </body>

</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云原生的爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值