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

yizhihongxing

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日

相关文章

  • js将键值对字符串转为json字符串的方法

    将键值对字符串转为JSON字符串的方法,可以使用JSON.parse()函数来实现。下面给出详细的攻略。 1. 确认键值对字符串的格式 在转换之前,需要确保键值对字符串的格式正确。格式应该是键值对之间使用逗号分隔,键与值之间使用冒号分隔,整个字符串包裹在一对花括号内。 例如,以下的字符串是合法的键值对字符串: {"name": &quot…

    Java 2023年5月26日
    00
  • Java编程通过list接口实现数据的增删改查代码示例

    Java编程通过list接口实现数据的增删改查是非常常见的需求。下面我将详细讲解这个完整攻略,其中包括以下几个部分: list接口的简介和操作方式 如何实现数据的增删改查 两个具体的示例说明 1. list接口的简介和操作方式 List接口是Java Collections(集合)框架中的一种,它继承自Collection接口。List中的元素是有序的,可以…

    Java 2023年5月23日
    00
  • Java连接MySQL数据库实例

    下面我将为大家详细讲解Java连接MySQL数据库实例的完整攻略。主要分为以下步骤: 步骤一:下载安装MySQL 首先需要下载并安装MySQL数据库,可以通过官网下载及安装。安装完成后,需要在MySQL中创建一个数据库及数据表。具体操作如下:1. 进入MySQL命令行客户端2. 创建一个数据库:CREATE DATABASE database_name;3.…

    Java 2023年5月19日
    00
  • 如何使用Java字节码操纵库?

    Java字节码操纵库是一个用于读写、操纵Java字节码的工具库,常用于动态生成和修改字节码,实现AOP、代码增强等功能。本文将详细讲解Java字节码操纵库的使用攻略,包括环境配置、库的选择、常用API使用示例等。 环境配置 在开始使用Java字节码操纵库之前,我们需要确保系统已安装JDK,建议使用JDK 8及以上版本。然后,我们需要下载并导入所选的字节码操纵…

    Java 2023年5月11日
    00
  • JavaScript 下载链接图片后上传的实现

    JavaScript 下载链接图片后上传的实现可以分为两个步骤: 步骤一:使用 fetch 下载图片 使用 fetch 函数可以快速、简单地下载远程图片。 fetch 函数可以返回图片的二进制数据,并且可以设置一些参数,例如请求的 method、headers、mode 等。下面是一个下载图片的示例: fetch(‘http://example.com/im…

    Java 2023年6月15日
    00
  • 关于Java利用反射实现动态运行一行或多行代码

    Java反射是指通过运行时借助Java API获取对象信息的机制。反射允许我们在程序运行时动态获取类的相关信息、构造实例、调用方法、访问和修改字段属性等。在一些特殊的需求场景下,我们可以利用Java的反射机制来实现动态运行一行或多行代码。以下是具体实现步骤: 1. 获取指定类的Class对象 在Java中,所有的类都是对象,每个类都有一个Class对象。获取…

    Java 2023年5月26日
    00
  • Java中网络IO的实现方式(BIO、NIO、AIO)介绍

    Java中网络IO的实现方式主要有BIO、NIO、AIO三种。下面分别进行介绍。 BIO BIO即Blocking IO,阻塞式IO,是一种传输方式。BIO的特点是同步阻塞,也就是说,客户端请求到来后,服务器必须处理完该请求才能执行下一步操作,高并发下无法满足需求。使用BIO方式,可以使用Socket和ServerSocket类进行通信。 下面是一个BIO的…

    Java 2023年5月19日
    00
  • 如何使用Spring自定义Xml标签

    如何使用Spring自定义Xml标签 Spring框架允许开发者自定义标签,扩展Spring标签库,以便支持自定义的xml标签。本文将介绍如何使用Spring自定义Xml标签,并提供两例示例说明。 Spring自定义Xml标签的过程: 定义schema文件 定义一个schema文件,以xsd为后缀名,包含Element和Attribute的定义。 编写Nam…

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