2

我是一个 docker maven 插件新手。

如果我理解得很好,根据Spotify 的 Dockerfile Maven 文档,应该将 Dockerfile 放在我项目的根目录中(我正在运行一个 spring boot 项目)。

在参考docker 编写 Dockerfiles 的最佳实践时

无论 Dockerfile 实际位于何处,当前目录中文件和目录的所有递归内容都会作为构建上下文发送到 Docker 守护进程。无意中包含构建映像不需要的文件会导致更大的构建上下文和更大的映像大小。

这是否意味着当 Spotify Dockerfile Maven 插件运行配置时,我正在公开发送给 docker 守护进程的源文件夹?

4

1 回答 1

1

回答

默认情况下,是的,构建上下文将包括您的源(和目标)目录。但是,您可以添加一个.dockerignore文件,告诉它不要这样做。

如果您不确定这是什么,请查看本教程。

观点

IMO:我可以想象从 maven 运行 docker 的场景是正确的做法。但是,我的想象力非常好,不会有那么多商店采用 docker 但不改变他们遗留的 maven 构建管道。

但在大多数情况下,您不想这样做。

相反,您应该使用一个 docker 容器来构建 java 工件并运行单元测试。然后,这可以将工件推送到 nexus(或您正在使用的任何 repo)。如果这是一个 webapp 或其他 http 服务,那么您可以使用第二个容器来托管它并将其部署到环境中以对其进行集成测试。

于 2018-09-04T12:01:37.813 回答