• 使用dockerfile部署springboot应用


    🚀 优质资源分享 🚀

    学习路线指引(点击解锁)知识定位人群定位
    🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
    💛Python量化交易实战💛入门级手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

    本章简单展示如何最短时间 把springboot应用打包成镜像并创建成容器。

    准备工作:

    1.安装docker ,保证执行docker version没有问题

    2.拉下来一个jdk镜像 docker pull openjdk:8-jdk-alpine

    1.创建一个简单的springboot项目

    项目地址:https://github.com/honstat/sp-web.git

    @RestController
    public class HelloController {
     @RequestMapping("/ping")
     public String ping(){
     return "ok";
     }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    App.class

    @SpringBootApplication
    public class App{
     public static void main(String[] args) {
     new SpringApplicationBuilder(App.class).run(args);
     }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    View Code

    application.yaml

    server:
     port: 9098
    
    spring:
     application:
     name: sp-web
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    View Code

    直接启动访问

    curl 127.0.0.1:9098/ping 能返回ok

    应用算是创建好了,接下来是打包

    pom文件

    </spanxml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0modelVersion>
    
     <groupId>org.examplegroupId>
     <artifactId>sp-webartifactId>
     <version>1.0version>
     <packaging>jarpackaging>
     <properties>
     <maven.compiler.source>8maven.compiler.source>
     <maven.compiler.target>8maven.compiler.target>
     properties>
     <dependencies>
     <dependency>
     <groupId>org.springframework.bootgroupId>
     <artifactId>spring-boot-starter-webartifactId>
     <version>2.6.5version>
    
    
    
    
    
    
     dependency>
     dependencies>
     <build>
     <finalName>sp-webfinalName>
    
    
    
    
    
    
    
    
    
    
     <plugins>
     <plugin>
     <groupId>org.springframework.bootgroupId>
     <artifactId>spring-boot-maven-pluginartifactId>
     <version> 2.6.1version>
     <executions>
     <execution>
     <goals>
     <goal>repackagegoal>
     goals>
     execution>
     executions>
     plugin>
     plugins>
     build>
    project>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55

    View Code
    ps:注释的部分 是打成war包的配置,目前是打jar包

    2.打jar包

    jar包启动方式

    java -jar sp-web.jar

    3.准备制作Dockerfile

    1.创建一个目录,把jar包复制到dockers文件夹

    mkdir dockers

    cd dockers

    创建Dockerfile文件

    touch Dockerfile

    拖到idea里面打开,开始编辑Dockerfile

    FROM openjdk:8-jdk-alpine
    ADD ./sp-web.jar /app.jar
    ENTRYPOINT ["java","-jar","app.jar"]
    
    • 1
    • 2
    • 3

    解释一下,

    第1行 FROM指令是拉取基础的镜像支持,这个springboot服务依赖jdk,必填的,如果基础镜像本地没有 docker images 列表找不到 就先docker pull xx 下来

    第2行 ADD指令是把文件夹中的jar包 复制到镜像根目录下,到此镜像打包指令结束了

    第3行 ENTRYPOINT 是在参加容器时执行的,作用是启动jar包,端口号在代码配置中指定了,这里不需要指定

    4.制作镜像

    在有Dockerfile文件的目录中执行命令

    docker build 是生成镜像

    -t webapp1.0 其中webapp1.0是指定镜像文件名称 有需要可以改名

    . 是在当前文件中找Dockerfile文件,如果不在这个目录可以指定 -f /xx/Dockerfile

    到此镜像生成完了,执行docker images指令查看

    5.创建容器,运行web服务

    先查看一遍 docker ps 代表查看正在运行的容器,目前暂无容器运行

    docker run --name webapp -p 8080:9098 webapp1.0

    创建容器的时候 会执行Dockerfile文件中的

    ENTRYPOINT ["java","-jar","app.jar"]所以web服务立即就跑起来了调用web服务接口 curl 127.0.0.1:8080/ping
    
    • 1

    总结

    本文先提醒大家做了准备工作安装docker 和拉下来基础镜像,为什么拉这个镜像,因为它小才100多M,而如果用tomcat做基础镜像,会变成接近600M 相当夸张。

    然后创建简单的springboot应用,如果想用现成的,可以把我写的demo拉下来 git clone https://github.com/honstat/sp-web.git

    接下来需要打包 生成.jar文件 ,其中需要注意pom文件的maven-plungin

    Dockerfile 文件编写,注意大小写

    生成镜像 创建容器

    验证服务 curl 127.0.0.1:8080/ping

    Dockerfile的好处就是一次编写 到处运行,基本不受环境限制。

    好了,分享就先到这里~

  • 相关阅读:
    机器学习课后习题 --- 逻辑回归
    多态概述、多态中成员变量的访问原则、引用数据类型的向上向下转型、多态的应用、包和访问权限
    v-for 中 key的作用和原理
    COMSOL在云平台的使用教程,超高效的方法来了
    第7集丨我找不着北:心学与理学的PK
    Python - 小玩意 - 请求网络地址获取网页链接
    getprime(512)CTF中的RSA基本方法
    在Docker容器中修改PostgresSQL最大连接数
    本周四晚19:00战码先锋第7期直播丨三方应用开发者如何为开源做贡献
    C++中的函数
  • 原文地址:https://blog.csdn.net/weixin_45566993/article/details/125443266