Docker - 未在本地构建应用程序时复制失败?
Docker - COPY fails when app has not been built locally?
我有以下 dockerfile
:
# Prepare runtime.
FROM openjdk:8-jre-alpine AS runtime
WORKDIR /app
EXPOSE 80
# Prepare build workspace.
FROM gradle:5.3.0-jdk-alpine AS sdk
WORKDIR /build-workspace
# Accept build args.
ARG ORG_GRADLE_PROJECT_mavenUser
ARG ORG_GRADLE_PROJECT_mavenPassword
# Setup build workspace.
USER root
RUN chown -R gradle .
USER gradle
# Copy.
COPY build.gradle .
COPY gradle.properties .
COPY src ./src
# Build, Test and publish.
RUN gradle clean build bootJar
# App image.
FROM runtime
COPY /build/libs/myApp-0.0.1-SNAPSHOT.jar ./app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]
该应用程序是一个 spring boot
MVC 网络应用程序,dockerfile
位于 build.gradle
等
旁边的根目录中
当我运行:
docker build -t myApp .
我得到:
Step 16/17 : COPY /build/libs/myApp-0.0.1-SNAPSHOT.jar ./app.jar
COPY failed: stat /var/lib/docker/tmp/docker-builder441781405/build/libs/myApp-0.0.1-SNAPSHOT.jar: no such file or directory
当我首先使用 gradle 在本地构建应用程序时,dockerfile 工作 - 大概是因为它可以看到构建文件夹。
如何更改我的 dockerfile 以便不需要本地构建?
使用COPY --from=sdk /build-workspace/libs/myApp-0.0.1-SNAPSHOT.jar ./app.jar
with --from=sdk
你告诉 Docker 从 gradle 构建阶段复制文件,没有它 docker 将从你的本地文件系统复制它。
了解更多信息see
我有以下 dockerfile
:
# Prepare runtime.
FROM openjdk:8-jre-alpine AS runtime
WORKDIR /app
EXPOSE 80
# Prepare build workspace.
FROM gradle:5.3.0-jdk-alpine AS sdk
WORKDIR /build-workspace
# Accept build args.
ARG ORG_GRADLE_PROJECT_mavenUser
ARG ORG_GRADLE_PROJECT_mavenPassword
# Setup build workspace.
USER root
RUN chown -R gradle .
USER gradle
# Copy.
COPY build.gradle .
COPY gradle.properties .
COPY src ./src
# Build, Test and publish.
RUN gradle clean build bootJar
# App image.
FROM runtime
COPY /build/libs/myApp-0.0.1-SNAPSHOT.jar ./app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]
该应用程序是一个 spring boot
MVC 网络应用程序,dockerfile
位于 build.gradle
等
当我运行:
docker build -t myApp .
我得到:
Step 16/17 : COPY /build/libs/myApp-0.0.1-SNAPSHOT.jar ./app.jar
COPY failed: stat /var/lib/docker/tmp/docker-builder441781405/build/libs/myApp-0.0.1-SNAPSHOT.jar: no such file or directory
当我首先使用 gradle 在本地构建应用程序时,dockerfile 工作 - 大概是因为它可以看到构建文件夹。
如何更改我的 dockerfile 以便不需要本地构建?
使用COPY --from=sdk /build-workspace/libs/myApp-0.0.1-SNAPSHOT.jar ./app.jar
with --from=sdk
你告诉 Docker 从 gradle 构建阶段复制文件,没有它 docker 将从你的本地文件系统复制它。
了解更多信息see