使用Gradle Wrapper构建子项目,同时保持Docker镜像的纤薄

时间:2018-04-01 09:11:45

标签: docker gradle continuous-integration circleci

我有一个多项目Gradle构建,我想在CircleCI上构建和测试,然后将生成的图像上传到Google Container Repository。

使用根目录中的Gradle Wrapper(gradlew)设置项目。从根目录我可以调用例如

./gradlew :backend:api:build

这会构建子项目并生成一个胖罐。这个胖罐是我打算放在最终的Docker镜像中并进行部署。为了使我的Docker镜像尽可能小,我在每个子项目目录中放置了一个Dockerfile。我想要做的只是将例如/root/backend/api复制到Docker镜像中,然后构建该子项目。这是我遇到麻烦的地方。当我尝试

RUN ./gradlew :backend:api:build

位于root/backend/api的Dockerfile中的

导致/bin/sh: 1: ./gradlew: not found。这是预期的,因为./gradlew仅在根目录中可用。我试图了解在这种情况下是否有最佳做法。我考虑过的几个选项是:

  1. ./gradlew个文件放在每个子项目目录中。感到多余和不好。
  2. 将整个仓库复制到图像中,而不仅仅是/backend/api。这会产生更大的图像,这也感觉多余。
  3. 使用包装器跳过。我认为结果不太可预测?
  4. 非常感谢任何建议!

0 个答案:

没有答案