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)

大家都在看

  • 汇编语言学习记录一

    0x00——什么是汇编语言? 汇编语言:早期实现程序员和机器进行交互的汇编指令集。 汇编指令,通过编译器,转换成机器码,从而使 机器 理解其指令。 0x01——汇编语言的组成 汇编…

    技术杂谈 2023年6月21日
    090
  • 2019Hexo博客Next主题深度美化 打造一个炫酷博客(2)-奥怪的小栈

    219/8/1 更新本文转载于:奥怪的小栈 这篇文章告诉你在搭建好博客后,面对网上千篇一律的美化教程怎么才能添加自己独特点,使人眼前一亮. 本站基于HEXO+Github搭建。所以…

    技术杂谈 2023年6月21日
    083
  • 接口

    一.抽象方法及抽象类 1-1 抽象方法 抽象方法:这种方法是不完整的,仅有声明而没有方法体。 public abstract void f(); 1-2 抽象类 包含抽象方法的类一…

    技术杂谈 2023年7月23日
    079
  • 520,解锁开发者的专属浪漫

    众所周知,提起程序员, 大家肯定清一色地想起穿着格子衬衫的直男直女。 可殊不知,程序员也有专属他们的浪漫。 在即将到来的”520″这个特殊的日子里, 让我们…

    技术杂谈 2023年5月30日
    092
  • C#撸了个批量转换Word、Excel、PPT为PDF的软件 pdfcvt.com

    批量转换Word、Excel、PPT为PDF的软件,一键转换所有文档为PDF,方便、简单、实用 批量转换Word、Excel、PPT为PDF的软件,一键转换所有文档为PDF,方便、…

    技术杂谈 2023年5月31日
    088
  • RabbitMQ与SpringBoot整合

    前文总结了Dubbo与SpringBoot的整合(https://www.cnblogs.com/cott/p/12373043.html),本文基于这套框架,引入RabbitMQ…

    技术杂谈 2023年7月25日
    066
  • java实现哈希表

    java实现哈希表 哈希表是一种数据结构,它可以快速的进行插入、查找、删除操作,无论数据量有多大,它都能把插入、查找和删除操作的时间复杂度降为O(1)级别。哈希表是基于数组+链表进…

    技术杂谈 2023年7月24日
    066
  • api接口基础Day1

    String的常用方法: length():获取字符串的长度(字符个数) public class LengthDemo { public static void main(Str…

    技术杂谈 2023年7月10日
    094
  • 数字孪生万物可视 | 联接现实世界与数字空间

    摘要:在新型智慧城市建设中,数字孪生是关键。 一直备受欢迎的某沙盒类模拟城市建设游戏中,玩家以市长的身份亲自规划和建设整座城市,比如购买土地、新建商业区等。游戏画面中可以在远景中看…

    技术杂谈 2023年5月31日
    093
  • 咏南go框架开发

    咏南go框架开发 以”计量单位”为例 1)使用”代码工厂”工具,将数据表生成units.proto。 2)使用protoc.exe …

    技术杂谈 2023年5月31日
    087
  • iOS_三角函数

    角度转弧度,弧度转角度 1、 三角函数double sin (double);正弦double cos (double);余弦double tan (double);正切2 、反三…

    技术杂谈 2023年5月30日
    079
  • 会员服务优雅上下线实践

    会员服务优雅上下线实践 https://mp.weixin.qq.com/s/rxHXhu6NsDWcuutSz13HpA Original: https://www.cnblog…

    技术杂谈 2023年5月31日
    085
  • 微信公众号申请+新浪SAE申请

    一、 新浪SAE服务申请1. 注冊地址:http://t.cn/RqMHPto2. 选择控制台》》云应用SAE3. 创建新应用4. 填写域名5. 代码管理选择SVN6. 创建版本号…

    技术杂谈 2023年5月31日
    084
  • 人工智能起步-反向回馈神经网路算法(BP算法)

    本文出处 人工智能分为强人工,弱人工。 弱人工智能就包括我们常用的语音识别,图像识别等,或者为了某一个固定目标实现的人工算法,如:下围棋,游戏的AI,聊天机器人,阿尔法狗等。 强人…

    技术杂谈 2023年6月21日
    0105
  • 从函数计算到 Serverless 架构

    前言 随着 Serverless 架构的不断发展,各云厂商和开源社区都已经在布局 Serverless 领域,一方面表现在云厂商推出传统服务/业务的 Serverless 化版本,…

    技术杂谈 2023年7月11日
    046
  • Python 报错 ValueError list.remove(x) x not in list 解决办法

    平时开发 Python 代码过程中,经常会遇到这个报错: ValueError: list.remove(x): x not in list 错误提示信息也很明确,就是移除的元素不…

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