【问题标题】:Dockerize my spring boot application without using maven to build the imageDockerize 我的 spring boot 应用程序而不使用 maven 来构建图像
【发布时间】:2018-06-06 12:49:21
【问题描述】:

我想通过 docker 容器服务我的 spring boot 应用程序,在设置时,它需要 maven 插件(fabric8)为容器构建一个 docker 映像,我不明白,

  • 为什么需要 maven 来构建镜像(甚至 Spring Boot 官方文档都建议这样做。https://spring.io/guides/gs/spring-boot-docker/
  • 是否有任何最佳实践来对我的 Spring Boot 应用程序进行 docker 化? 请帮我解决这个问题,在此先感谢

【问题讨论】:

  • 你只需要一个jar,将jar复制到docker镜像并作为java进程运行。为什么是行家?如何将 Spring Boot 应用程序打包为 jar?然后你将使用 spring boot maven/gradle 插件将 app 打包为 jar。
  • @Barath,构建需要使用 maven/gradle 插件构建的 docker 镜像!!
  • 没错。这是构建 docker image 的一种方式。另一种是使用 docker build 命令来构建 docker 镜像。两种方式构建 docker 镜像,使用 docker 命令或者使用插件。

标签: spring maven docker spring-boot dockerfile


【解决方案1】:

构建docker镜像有两种方式

1.使用 Maven 构建 Docker 映像

添加dockerfile maven插件

<plugins>
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>dockerfile-maven-plugin</artifactId>
            <version>1.3.6</version>
            <configuration>
                <repository>${docker.image.prefix}/${project.artifactId}</repository>
    <buildArgs>
        <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
    </buildArgs>
            </configuration>
        </plugin>
    </plugins>

使用命令行构建 docker 镜像

./mvnw install dockerfile:build

2。使用 Docker 命令构建 Docker 镜像

  • cd 进入包含 Dockerfile 的项目目录
  • 运行maven命令

    ./mvnw 全新安装

  • 运行 docker build 命令

    码头工人构建。

    docker build -f /path/to/Dockerfile

【讨论】:

    【解决方案2】:

    Docker 镜像是 Spring Boot 无法提供的,因为 Spring Boot 本身就是一个运行时框架,它告诉 JVM 如何运行你的代码。相反,Docker 是关于如何交付和运行 JVM 本身。所以,Spring Boot 是一个运行时框架,而 Docker 镜像不是你在运行时做的事情。您只能在构建时构建 Docker 映像,此时您的工件(和 Spring Boot)尚未运行。

    Maven 是一个构建工具,所以当 Maven 执行构建时,它可以在整个构建过程中包含构建 Docker 镜像。这不仅可以使用 Maven,还可以使用任何具有 Docker 插件的构建工具。 Maven 只是一个流行的构建工具,所以在其他框架手册中也经常用到,但实际上 Maven、Spring Boot 和 Docker 之间并没有依赖关系。 Maven 拥有构建 Spring Boot 应用程序和构建 Docker 镜像的所有工具。

    要对您的应用程序进行 docker 化,您不需要 Maven,但您需要以某种方式包含构建 Docker 映像来为您的应用程序构建脚本。

    【讨论】:

      猜你喜欢
      • 2018-01-10
      • 1970-01-01
      • 2014-11-30
      • 2020-07-16
      • 2017-03-21
      • 2019-07-01
      • 2019-05-02
      • 2018-03-26
      • 2018-01-14
      相关资源
      最近更新 更多