美文网首页
SpringBoot打包docker镜像运行

SpringBoot打包docker镜像运行

作者: 任未然 | 来源:发表于2022-01-05 10:22 被阅读0次

    一. 概述

    参考开源项目https://github.com/xkcoding/spring-boot-demo
    本Demo将简单示例将SpringBoot项目打包docker镜像运行, 提供两种打包方式, 分别是: 手动打包和maven插件打包

    二. 示例

    image.png

    2.1 Dockerfile

    # 基础镜像
    FROM openjdk:8-jdk-alpine
    
    # 作者信息
    MAINTAINER "wangpr 123456@qq.com"
    
    # 添加一个存储空间
    VOLUME /wpr
    
    # 暴露8080端口
    EXPOSE 8080
    
    # 添加变量,如果使用dockerfile-maven-plugin,则会自动替换这里的变量内容
    ARG JAR_FILE=./target/demo-docker.jar
    
    # 往容器中添加jar包
    ADD ${JAR_FILE} app.jar
    
    # 启动镜像自动运行程序
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/urandom","-jar","/app.jar"]
    

    2.2 application.yml

    server:
      port: 8080
      servlet:
        context-path: /demo
    

    2.3 启动类

    @SpringBootApplication
    public class SpringBootDemoDockerApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(SpringBootDemoDockerApplication.class, args);
        }
    }
    

    打包方式

    手动打包

    1. 前往 Dockerfile 目录,打开命令行执行

      $ docker build -t spring-boot-demo-docker .
      
    2. 查看生成镜像

      $ docker images
      
      REPOSITORY                                                        TAG                 IMAGE ID            CREATED             SIZE
      spring-boot-demo-docker                                           latest       bc29a29ffca0        2 hours ago         119MB
      openjdk                                                           8-jdk-alpine        97bc1352afde        5 weeks ago         103MB
      
    3. 运行

      $ docker run -d -p 9090:8080 spring-boot-demo-docker
      

    使用 maven 插件打包

    1. pom.xml 中添加插件

    2. <properties>
          <dockerfile-version>1.4.9</dockerfile-version>
      </properties>
      
      <plugins>      
          <plugin>
              <groupId>com.spotify</groupId>
              <artifactId>dockerfile-maven-plugin</artifactId>
              <version>${dockerfile-version}</version>
              <configuration>
                  <repository>${project.build.finalName}</repository>
                  <tag>${project.version}</tag>
                  <buildArgs>
                      <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                  </buildArgs>
              </configuration>
              <executions>
                  <execution>
                      <id>default</id>
                      <phase>package</phase>
                      <goals>
                          <goal>build</goal>
                      </goals>
                  </execution>
              </executions>
          </plugin>
      </plugins>
      
    3. 执行mvn打包命令,因为插件中 execution 节点配置了 package,所以会在打包的时候自动执行 build 命令。

      $ mvn clean package -Dmaven.test.skip=true
      
    4. 查看镜像

      $ docker images
      
      REPOSITORY                                                        TAG                 IMAGE ID            CREATED             SIZE
      spring-boot-demo-docker                                           1.0.0-SNAPSHOT      bc29a29ffca0        2 hours ago         119MB
      openjdk                                                           8-jdk-alpine        97bc1352afde        5 weeks ago         103MB
      
    5. 运行

      $ docker run -d -p 9090:8080 spring-boot-demo-docker:1.0.0-SNAPSHOT
      

    相关文章

      网友评论

          本文标题:SpringBoot打包docker镜像运行

          本文链接:https://www.haomeiwen.com/subject/hhvqcrtx.html