我有一个多项目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
仅在根目录中可用。我试图了解在这种情况下是否有最佳做法。我考虑过的几个选项是:
./gradlew
个文件放在每个子项目目录中。感到多余和不好。/backend/api
。这会产生更大的图像,这也感觉多余。非常感谢任何建议!