在docker映像中安装maven/java包而不启动springboot

在docker映像中安装maven/java包而不启动springboot,java,maven,docker,Java,Maven,Docker,我有以下Dockerfile: FROM maven:3.3.9 COPY . /code WORKDIR /code RUN ["mvn", "install"] CMD mvn spring-boot:run 它在第4行(mvn install)上崩溃,因为所有软件包都已安装,但在Spring结束时启动并尝试连接到数据库容器(它没有运行,因为目前我只构建映像) 有没有一种方法可以只安装maven软件包,而不用启动spring并运行?我希望避免每次启动后端服务时下载大量内容。CMD mvn

我有以下Dockerfile:

FROM maven:3.3.9
COPY . /code
WORKDIR /code
RUN ["mvn", "install"]
CMD mvn spring-boot:run
它在第4行(
mvn install
)上崩溃,因为所有软件包都已安装,但在Spring结束时启动并尝试连接到数据库容器(它没有运行,因为目前我只构建映像)


有没有一种方法可以只安装maven软件包,而不用启动spring并运行?我希望避免每次启动后端服务时下载大量内容。

CMD mvn spring boot:run
将导致应用程序启动。只要用
CMD sh-c
或适合您需要的东西来替换它即可

CMD的主要用途是为正在执行的 容器。这些默认值可以包括可执行文件,也可以省略 可执行文件,在这种情况下,必须指定入口点 指导也是如此


Do
mvn安装-DskipTests
。它将跳过所有内容,只下载软件包

如果不想运行springboot,难道你不能从脚本中删除最后一行吗?
mvn安装
正在启动spring。我希望它只在我决定运行docker容器时启动。也就是说,当
CMD
行运行时。在步骤4中没有启动SpringBoot,但也没有缓存包:/Everytime
mvn spring boot:run
运行时,从0下载包每次构建映像时,都需要下载依赖项。可能的解决方案是创建一个docker映像,其中包含所有maven依赖项,并将其用作基础映像。从那时起,每次安装mvn时,它不会从internet下载任何内容,而是使用缓存的内容。缺点是,如果您最终更改了任何maven依赖项,它们将再次需要从internet下载