SpringBoot打包docker镜像运行

一. 概述

参考开源项目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
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容