【发布时间】:2021-04-15 09:15:53
【问题描述】:
我是 docker 新手,我正在尝试为 spring boot 项目设置 docker。
这是我的 Dockerfile
FROM maven:3.6.3-jdk-11-slim AS build
WORKDIR usr/src/springboot
COPY . ./
RUN mvn install
RUN mvn clean package
#
# Package stage
#
FROM openjdk:11-jre-slim
ARG JAR_NAME="springboot-0.0.1-SNAPSHOT"
WORKDIR /usr/src/springboot
EXPOSE 8080
COPY --from=build /usr/src/springboot/target/${JAR_NAME}.jar ./springboot.jar
CMD ["java","-jar", "./springboot.jar"]
完全正常,我可以从 localhost:8080 访问 hello world
但我的困惑是如何使 java 文件中的任何更改反映在 docker 容器中?如何重新编译 .jar 文件。
我尝试过类似docker exec -it strange_shaw "mvn clean package"
但它会抛出错误exec: "mvn clean package": executable file not found in $PATH: unknown
【问题讨论】:
-
先
install再clean package没有意义 -
尝试 mvn clean install
-
只有
mvn verify就足够了。除此之外还有一个问题:你需要在容器内构建吗?我建议在容器外构建(只是更快),然后将最终的 jar 复制到容器中。此外,您可以配置<build><finalName>${project.artifactId}</finalName>..,并且您总是得到target/aname,而没有简化与容器配合的版本... -
@khmarbaise 是的,我想在容器外构建。执行此操作的命令是什么?
-
mvn clean verify?