Docker 打包部署web项目 [Dockerfile方式]

系统环境

IDE: IDEA 2020.2
Linux: WSL2 Ubuntu 20.04
Docker: 20.10.8

参考资料

1. 配置 SpringBoot 项目

1.1 创建 SpringBoot 项目

使用 Spring Initializr创建Spring Boot项目作为演示。

示例代码: pom.xml


    4.0.0

        org.springframework.boot
        spring-boot-starter-parent
        1.5.9.RELEASE

    com.bpf
    spring-boot-web
    0.0.1
    spring-boot-web
    Demo project for Spring Boot

        1.8

            org.springframework.boot
            spring-boot-starter-web

            org.springframework.boot
            spring-boot-starter-test
            test

                org.springframework.boot
                spring-boot-maven-plugin

示例代码: HelloController.java

package com.bpf.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String hello() {

        return "Hello, Spring Web!";
    }
}

1.2 maven 打包

在与 pom.xml文件同路径下进行打包。打包后生成的jar包会保存在 target目录下。

mvn clean package -DskipTests

-DskipTests表示跳过测试程序。

1.3 docker 打包

  • 创建 docker文件夹
  • mkdir docker
  • cd docker
  • 将jar包复制过来
  • cp ../target/*.jar .
  • 创建 Dockerfile
  • touch spring_dockerfile
spring_dockerfile 内容
FROM openjdk:8u312-slim-buster

COPY *.jar /app.jar

EXPOSE 8080

ENTRYPOINT java -jar /app.jar
  • 创建镜像
  • docker build -f spring_dockerfile -t spring-web .
  • 运行容器
  • docker run -d --name springweb -p 8081:8080 spring-web

Docker 打包部署web项目 [Dockerfile方式]

2. 配置 JavaWeb 项目

2.1 创建 JavaWeb 项目

注意点

Docker打包部署JavaWeb项目时,需要在 pom.xml中通过 webXml标签指定 web.xml的位置;同时需要通过 resources标签告知maven打包时要将xml配置文件包括进去。

示例代码: pom.xml


    4.0.0

    org.bpf
    javaweb
    0.0.1
    war

            org.springframework
            spring-webmvc
            4.0.0.RELEASE

                src/main/resources

                    *.xml

                org.apache.maven.plugins
                maven-war-plugin
                2.2

                    web/WEB-INF/web.xml

示例代码: web.xml


        contextConfigLocation
        classpath:spring.xml

        org.springframework.web.context.ContextLoaderListener

        dispatcherServlet
        org.springframework.web.servlet.DispatcherServlet

            contextConfigLocation
            classpath:springmvc.xml

        1

        dispatcherServlet
        /

示例代码: spring.xml


示例代码: springmvc.xml


示例代码: HelloController.java

package com.bpf.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HelloController {

    @ResponseBody
    @RequestMapping("/hello")
    public String hello() {
        System.out.println("访问了 /hello");
        return "Hello, JavaWeb.";
    }
}

2.2 maven 打包

在与 pom.xml文件同路径下进行打包。打包后生成的war包会保存在 target目录下。

mvn clean package -DskipTests

2.3 docker 打包

  • 创建 docker文件夹
  • mkdir docker
  • cd docker
  • 将war包复制过来
  • cp ../target/*.war .
  • 创建 Dockerfile
  • touch javaweb_dockerfile
javaweb_dockerfile 内容
FROM tomcat:8.5-jdk8

ADD *.war /usr/local/tomcat/webapps/javaweb.war

EXPOSE 8080

ENTRYPOINT catalina.sh run
  • 创建镜像
  • docker build -f javaweb_dockerfile -t java-web .
  • 运行容器
  • docker run -d --name javaweb -p 8082:8080 java-web

Docker 打包部署web项目 [Dockerfile方式]

Original: https://www.cnblogs.com/bpf-1024/p/15449741.html
Author: 步平凡
Title: Docker 打包部署web项目 [Dockerfile方式]

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/683813/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球