Docker 制作tomcat镜像并部署项目的步骤

Docker是目前比较流行的容器化技术,可以将应用程序与其依赖的环境打包到一个容器中,提供轻量级的配置、部署和管理方式。本文将介绍制作tomcat镜像并部署项目的步骤。

准备工作

在开始制作tomcat镜像前,需要先准备好以下环境:

  • 安装Docker
  • 基于Docker官方的Java镜像,下载Tomcat。
  • 编写项目代码并打包为war包。
  • 了解 Linux 命令基础知识。

制作Tomcat镜像

步骤

  1. 下载基于doker官方的Java镜像。
docker pull java:8-jre-alpine

这里使用的是Java 8 的小型基础镜像 alpine/3.7 镜像。

  1. 下载Tomcat并解压
wget http://mirror.navercorp.com/apache/tomcat/tomcat-9/v9.0.54/bin/apache-tomcat-9.0.54.tar.gz
tar -zxf apache-tomcat-9.0.54.tar.gz -C /usr/local

3.运行Tomcat

cd /usr/local/apache-tomcat-9.0.54/bin
./startup.sh

4.创建 Dockerfile

vi Dockerfile

## 编辑 Dockerfile
FROM java:8-jre-alpine

LABEL maintainer="Your Name <Your-Email@xxx.com>"

ENV CATALINA_HOME /usr/local/tomcat
ENV PATH $CATALINA_HOME/bin:$PATH

RUN apk add --no-cache curl && \
    curl http://mirror.navercorp.com/apache/tomcat/tomcat-9/v9.0.54/bin/apache-tomcat-9.0.54.tar.gz | tar -xz && \
    mv apache-tomcat-9.0.54 /usr/local/tomcat && \
    rm -rf $CATALINA_HOME/webapps/*

EXPOSE 8080

CMD ["catalina.sh", "run"]

解释:

  • FROM:指定基础镜像,这里使用Java 8的alpine镜像作为基础镜像。
  • LABEL:指定镜像的元数据
  • ENV:指定环境变量,这里为了方便设置了 $CATALINA_HOME$PATH 变量,其中 $CATALINA_HOME 设置为 /usr/local/tomcat$PATH${CATALINA_HOME}/bin 添加到系统的PATH中。
  • RUN:执行命令,安装和配置Tomcat环境.
  • EXPOSE:暴露指定的端口,这里为Tomcat启动的端口 8080。
  • CMD:指定启动容器时执行的命令。这里设置为 catalina.sh run,即启动Tomcat服务器。

5.构建镜像

docker build -t tomcat-test:0.0.1 .

6.推送镜像

可以将自己的镜像推送到网站,使用命令:

docker login
docker tag tomcat-test:0.0.1 your-docker-id/tomcat-test:0.0.1
docker push your-docker-id/tomcat-test:0.0.1

在Docker中运行Tomcat容器并部署应用

步骤

  1. 下载和编写应用程序代码。

以一个简单的servlet为例,将其编写为 hello-tomcat 项目并打包为 war 包:

<!-- web.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
    <display-name>Hello-Tomcat-WebApp</display-name>
    <servlet>
        <servlet-name>Hello</servlet-name>
        <servlet-class>HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Hello</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
</web-app>
// HelloServlet.java
public class HelloServlet extends HttpServlet {
    private static final long serialVersionUID = 257245453039928002L;

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {

        resp.setContentType("text/html");
        PrintWriter out = resp.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Tomcat Sample</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>Hello World</h1>");
        out.println("</body>");
        out.println("</html>");
        out.close();

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        doGet(req, resp);
    }

}

假设将其打包为 hello-tomcat.war 文件.

2.创建 Dockerfile

vi Dockerfile

## 编辑 Dockerfile
FROM your-docker-id/tomcat-test:0.0.1

COPY ./hello-tomcat.war /usr/local/tomcat/webapps/

解释:

  • FROM:指定基础镜像,这里使用上面制作的tomcat-test镜像。
  • COPY:将应用程序 hello-tomcat.war 复制到容器的 /usr/local/tomcat/webapps/ 目录下。

3.构建镜像

docker build -t hello-tomcat:0.0.1 .

4.运行容器

docker run -d -p 8080:8080 hello-tomcat:0.0.1

解释:

  • -d 参数表示在后台运行容器。
  • -p 参数表示将容器的8080端口映射到主机的8080端口。
  • hello-tomcat:0.0.1 是刚才所构建的镜像的名称和版本。

5.访问应用程序

在浏览器中访问 http://localhost:8080/hello-tomcat/hello,即可看到运行结果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Docker 制作tomcat镜像并部署项目的步骤 - Python技术站

(0)
上一篇 2023年6月2日
下一篇 2023年6月2日

相关文章

  • struts2配置静态资源代码详解

    让我来详细讲解“struts2配置静态资源代码详解”的完整攻略。在 Struts2 中配置静态资源主要包括三个步骤: 在 web.xml 中添加一个用于处理静态资源请求的 Servlet: 在 web.xml 中添加以下代码: <servlet> <servlet-name>default</servlet-name> &…

    Java 2023年5月20日
    00
  • JDBC的扩展知识点总结

    下面我会详细讲解“JDBC的扩展知识点总结”的完整攻略。 JDBC的扩展知识点总结 什么是JDBC Java数据库连接(Java Database Connectivity,简称JDBC)是Java语言中用于执行SQL语句的一组API。通俗地讲,JDBC就是Java语言连接数据库的一个标准规范。使用JDBC,可以使Java程序与任何支持SQL的关系型数据库进…

    Java 2023年5月20日
    00
  • Spring Boot 配置和使用多线程池的实现

    下面是关于Spring Boot配置和使用多线程池的实现的完整攻略。 概述 Spring Boot是一个开源的JavaEE(现在改名为Jakarta EE)快速开发框架,由于其快速开发和开箱即用的特性,受到了广泛的欢迎。在Spring Boot中,我们可以非常容易地配置和使用多线程池。使用多线程池可以显著提高应用程序的性能,特别是在处理IO密集型任务时。 添…

    Java 2023年5月19日
    00
  • 在Spring使用iBatis及配置讲解

    下面我将为您详细讲解“在Spring使用iBatis及配置讲解”的完整攻略。 前置知识 在学习使用iBatis前,我们需要掌握以下技能: 熟悉SQL语句的编写,理解SQL的基本语法和关键字; 熟悉Java语言的基础知识; 熟悉Spring框架的基本概念及使用方法。 环境准备 在使用iBatis时,我们需要准备以下环境: JDK:Java开发程序所必需的环境;…

    Java 2023年5月20日
    00
  • 一篇文章带你入门Java修饰符

    一篇文章带你入门Java修饰符 Java中修饰符是控制访问权限和类、变量和方法行为的关键字。在Java中,共有四类修饰符:访问修饰符、非访问修饰符、类修饰符和方法修饰符。接下来将详细介绍这四类修饰符以及它们的使用规范。 一、访问修饰符 访问修饰符 含义 public 所有类可见 protected 同一包内和子类可见 private 仅本类可见 没有修饰符 …

    Java 2023年5月26日
    00
  • java运行时数据区域和类结构详解

    关于“java运行时数据区域和类结构详解”的攻略,下面是详细讲解: Java运行时数据区域 Java虚拟机在执行Java程序时,会将它所管理的内存划分成不同的数据区域,分别用于存储不同类型的数据。主要分为以下几个部分: 程序计数器 程序计数器是一块较小的内存空间,它的作用是记录当前线程执行的字节码的位置。程序计数器一般不会出现OutOfMemoryError…

    Java 2023年5月26日
    00
  • 使用纯java config来配置spring mvc方式

    使用纯Java配置Spring MVC的方式需要借助于Spring的WebApplicationInitializer接口。WebApplicationInitializer是一个接口,它被用来实现ServletContextInitializer,在servlet3.0+容器中被自动使用。在这里,我们将WebApplicationInitializer用于…

    Java 2023年5月16日
    00
  • 带你一文深入认识Java String类

    带你一文深入认识Java String类 1. 什么是Java String类 Java String类是Java编程语言中最常用的类之一。它用于处理字符串,是一个不可变的类,即一旦一个字符串被创建,它就不能被修改。String类提供了许多方法来操作字符串。 2. 如何创建Java字符串 可以通过两种方式创建Java字符串: 2.1 直接赋值创建字符串 St…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部