【问题标题】:Where to find produced Docker image在哪里可以找到生成的 Docker 映像
【发布时间】:2020-06-08 10:40:32
【问题描述】:

我正在尝试实现本教程中的示例:

https://spring.io/guides/gs/spring-boot-docker/

我成功编译了包:

C:\Users\Desktop\rest_api>docker build -t springio/gs-spring-boot-docker .
Sending build context to Docker daemon  105.6MB
Step 1/5 : FROM openjdk:13-alpine
 ---> c4b0433a01ac
Step 2/5 : EXPOSE 8080
 ---> Using cache
 ---> 010600c5a7d0
Step 3/5 : ARG JAR_FILE=target/rest_api.jar
 ---> Running in 8ba2e28e0870
Removing intermediate container 8ba2e28e0870
 ---> b453cd05cbd2
Step 4/5 : ADD ${JAR_FILE} app.jar
 ---> dade5dd3eff2
Step 5/5 : ENTRYPOINT ["java","-jar","/app.jar"]
 ---> Running in e8a1f985f0fd
Removing intermediate container e8a1f985f0fd
 ---> cfa353eb23c5
Successfully built cfa353eb23c5
Successfully tagged springio/gs-spring-boot-docker:latest
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.

C:\Users\Desktop\rest_api>

我不清楚编译后的包在哪里?你能指导我它的位置以及如何将它挂载到 Docker 中吗?

Docker 文件:

FROM openjdk:13-alpine
EXPOSE 8080
ARG JAR_FILE=target/rest_api.jar
ADD ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

【问题讨论】:

  • 编译后的jar在目标文件夹内。

标签: java spring spring-boot docker


【解决方案1】:

为了得到“编译包”(spring boot jar),你需要先调用mvn package

此命令将编译源代码并在项目的目标目录中创建一个 JAR。

由于您使用的是 spring boot,因此您需要配置 spring boot maven 插件(确保它出现在 pom.xml 中)该插件创建了一个特殊的 spring boot 应用程序 jar,其中包含所有依赖项。它将它存储在target 目录中

因此,在调用mvn package 命令之后,在运行docker build 命令之前转到target 目录并确保您有一个相对较大的应用程序JAR。

我认为,这个解释回答了“已编译的包位于何处?”的部分问题

现在关于“如何挂载到 Docker”部分问题:

在 Dockerfile 中使用ADD 命令。此命令获取 jar 并将其“添加”到 docker 映像中(就像添加到容器的文件系统中),因此它将在 /app.jar 下可用(因为您还在途中重命名了工件)

【讨论】:

    【解决方案2】:

    在构建时,jar 文件已从您的计算机复制到容器中,并且位于 /app.jar。无需挂载。

    【讨论】:

    • @michalk 怎么样?你认为什么是准确的? ADD 命令从[build directory]/target/rest_api.jar 复制文件(构建目录是调用docker build 的最后一个参数,在我们的例子中是当前目录)。
    • 我认为你应该更精确。诸如“从主机系统复制到容器中”之类的东西。注意:我没有投反对票。
    猜你喜欢
    • 1970-01-01
    • 2015-11-09
    • 1970-01-01
    • 1970-01-01
    • 2014-02-22
    • 2010-12-10
    • 1970-01-01
    • 2011-01-28
    • 2019-11-30
    相关资源
    最近更新 更多