【发布时间】:2019-11-18 06:16:10
【问题描述】:
我想为 Spring Boot 应用程序创建 Docker 映像。它使用 gardle 作为构建工具。
在 bitbucket 存储库中,我可以看到放置了以下文件
--> src
--> build.gradle
--> Dockerfile
--> gradlew
--> gradlew.bat
现在 Dockerfile 有以下内容
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG DEPENDENCY=target/dependency
COPY ${DEPENDENCY}/BOOT-INF/lib /app/lib
COPY ${DEPENDENCY}/META-INF /app/META-INF
COPY ${DEPENDENCY}/BOOT-INF/classes /app
EXPOSE 8080
ENTRYPOINT ["java","-cp","app:app/lib/*","eds.billnq"]
当我尝试使用 Dockerfile 创建图像时出现错误
target/dependency/BOOT-INF library not found
target/dependency/META-INF library not found
我的问题是为什么 docker 文件中没有 gradle 构建步骤? 还将在哪里创建目标/依赖项/?
【问题讨论】:
-
@WonChul Heo 我提到了它,但我仍然不明白为什么 Dockerfile 中没有 gradle 构建步骤
-
您是否引用了设置here?
-
@WonChul Heo 是的,由于一些错误,我也对其进行了修改。除了错误之外,我的主要问题是为什么我们不在 Dockerfile 中使用构建步骤?
-
好吧,我对spring不太熟悉,但是你得到的错误是因为目标/依赖实际上应该是你机器中的一个目录。所以第 4 行和第 5 行基本上是在尝试将 BOOT-INF 和 META-INF 从您机器的 target/dependency 目录中复制到 docker 容器中。 Docker 文件中没有任何内容来实际创建目录,它只是使用它。
标签: spring-boot docker gradle microservices