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)

大家都在看

  • k8s整合Traefik2入门(一)

    k8s整合Traefik入门(一) 安装 首先下载helm,根据自己的k8s版本来选择相应的版本 [root@k8s-master1 ~]# tar -zvxf helm-v3.6…

    技术杂谈 2023年5月31日
    0111
  • Jquery获取selelct选中值

    javascript;gutter:true; 误区:</p> <pre><code> 一直以为jquery获取select中option被选中…

    技术杂谈 2023年5月31日
    0100
  • Echarts 实现飞线图效果

    Echarts 实现飞线图效果 实现的基本效果如下所示: 实现echarts飞线图的灵感是来自网上的demo,比如 https://github.com/guohaining/ec…

    技术杂谈 2023年6月1日
    0112
  • 用户成长体系-积分体系设计

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/shoshana-kong/p/16498618.htm…

    技术杂谈 2023年6月1日
    093
  • 十二、异常处理机制(完结)

    十二、异常处理机制 12.1 异常处理的引入 public class Exception01 { public static void main(String[] args) {…

    技术杂谈 2023年7月11日
    072
  • 3. SpringBoot整合Redis

    1.下载地址以及安装 https://github.com/MicrosoftArchive/redis/releases 我是安装的windows版本所以选择这个: 解压之后运行…

    技术杂谈 2023年7月24日
    061
  • delete

    delete ; delete Original: https://www.cnblogs.com/timssd/p/13215611.htmlAuthor: xxxxxxxx1x…

    技术杂谈 2023年5月30日
    085
  • 你的哪些骚操作会导致SegmentationFault😂

    你的哪些骚操作会导致Segmentation Fault😂 前言 如果你是一个写过一些C程序的同学,那么很大可能你会遇到魔幻的 segmentation fault,可能一时间抓耳…

    技术杂谈 2023年7月23日
    079
  • JAVA多线程实战

    由于项目上要和其他系统交互,而该系统采用同步接口,我们采用单线程调用,接收一条数据平均需要4~6s。而我们需要汇总近三个月的订单信息,大约一次有几千条数据,所以进行一次交互大概需要…

    技术杂谈 2023年7月24日
    093
  • Zeebe架构图

    posted @2022-02-10 11:14 任国强 阅读(165 ) 评论() 编辑 Original: https://www.cnblogs.com/rgqancy/p/…

    技术杂谈 2023年6月1日
    093
  • 2022 Automation Trends

    2022 Automation Trends, Questions and Answers – Camundahttps://camunda.com/blog/2022…

    技术杂谈 2023年6月1日
    0117
  • 标注工具doccano导出数据为空的解决办法

    其实安装挺简单的: pip install doccano Initialize database. doccano init Create a super user. docca…

    技术杂谈 2023年6月1日
    097
  • Optional用法与争议点

    原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处。 简介 要说Java中什么异常最容易出现,我想NullPointerException一定当仁不让,为…

    技术杂谈 2023年7月25日
    078
  • 初识Java

    ; ; C&C++ Java应运而生 以这样的构想进行编写 语法类似C 没有指针 没有内存管理 可移植性 面向对象 类型安全 高质量的类库 …… 可移植性 …

    技术杂谈 2023年6月21日
    0106
  • Jmix 中 REST API 的两种实现

    你知道吗,在 Jmix 中,REST API 有两种实现方式! 很多应用是采取前后端分离的方式进行开发。这种模式下,对前端的选择相对灵活,可以根据团队的擅长技能选择流行的 Angu…

    技术杂谈 2023年6月21日
    090
  • 没有苦劳,只有功劳!

    很多人常常发出这样的感慨:”我在公司这么多年了,没有功劳也有苦劳啊!怎么这么久还没有被提拔,薪水没有得到提升呢?” 古罗马皇帝拿破仑曾经碰到过这样一个事情。…

    技术杂谈 2023年5月31日
    092
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球