spring-boot-demo/demo-docker
Yangkai.Shen f56236a966 🎨 规范注释风格 2020-10-25 11:27:29 +08:00
..
src 🎨 规范注释风格 2020-10-25 11:27:29 +08:00
.gitignore 🚚 简化模块名称,便于阅读 2020-10-19 17:14:17 +08:00
Dockerfile 🚚 简化模块名称,便于阅读 2020-10-19 17:14:17 +08:00
README.md 🚚 简化模块名称,便于阅读 2020-10-19 17:14:17 +08:00
pom.xml 🚚 简化模块名称,便于阅读 2020-10-19 17:14:17 +08:00

README.md

spring-boot-demo-docker

本 demo 主要演示了如何容器化一个 Spring Boot 项目。通过 Dockerfile 的方式打包成一个 images 。

Dockerfile

# 基础镜像
FROM openjdk:8-jdk-alpine

# 作者信息
MAINTAINER "Yangkai.Shen 237497819@qq.com"

# 添加一个存储空间
VOLUME /tmp

# 暴露8080端口
EXPOSE 8080

# 添加变量如果使用dockerfile-maven-plugin则会自动替换这里的变量内容
ARG JAR_FILE=target/spring-boot-demo-docker.jar

# 往容器中添加jar包
ADD ${JAR_FILE} app.jar

# 启动镜像自动运行程序
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/urandom","-jar","/app.jar"]

打包方式

手动打包

  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
    

参考