【发布时间】:2020-11-09 15:00:42
【问题描述】:
Dockerfile:
FROM maven:3.6.3-openjdk-8 as builder
# Set the working directory.
WORKDIR /usr/src/mymaven
COPY ./ /usr/src/mymaven
CMD [ "mvn" , "clean" , "install" ]
FROM openjdk:8
COPY --from=builder /usr/src/mymaven/target /usr/src/myapp
WORKDIR /usr/src/myapp
CMD ["java", "-jar" , "Backend-0.0.1-SNAPSHOT.jar"]
上述 docker build 失败并出现以下错误:
目标文件夹不存在
以下 dockerfile 完美运行:
FROM maven:3.6.3-openjdk-8 as builder
# Set the working directory.
WORKDIR /usr/src/mymaven
COPY ./ /usr/src/mymaven
RUN [ "mvn" , "clean" , "install" ]
FROM openjdk:8
COPY --from=builder /usr/src/mymaven/target /usr/src/myapp
WORKDIR /usr/src/myapp
CMD ["java", "-jar" , "Backend-0.0.1-SNAPSHOT.jar"]
只需将 CMD 更改为 RUN 即可解决问题。为什么会这样?我以为在间歇性容器中,cmd会执行,这应该使两个命令等效吗?
【问题讨论】:
-
CMD在构建时不运行任何东西。它只是在您稍后运行容器时设置一个默认命令。 -
“我认为在间歇性容器中,cmd 会执行,这应该使两个命令等效”你有任何链接吗?
-
@Thilo 没有来源只是我的假设
标签: java docker maven dockerfile docker-multi-stage-build