如何将 python 包安装到 monorepo 内的 docker 服务中
How to install python package into a docker service inside of a monorepo
我有一个 monorepo 设置,如下所示:
/serviceA
/serviceB
/packageA
/packageB
我想在 serviceA
中安装 packageA
,这是 docker 容器,里面有 python 服务。
在我的 serviceA
requirements.txt
文件中,我可以引用本地包:file:///Users/me/dev/platform/packageA
,提交到 gcloud builds
时失败,因为包不在该机器上.
我的问题是,我在这里有哪些选择,我是否要按照 correct/best 方式进行此设置?
我的想法是我可以尝试将代码复制到 docker 中,但这似乎有点老套 - 因为我不确定版本会去哪里..
另一种选择是先推送到 GH 并从那里引用,但这意味着我需要以某种方式授予对存储库的访问权限以进行云构建。
您可以使用Docker multi stage build策略:
FROM base as package-builder
COPY your_package_A_code
RUN your_package_build_stuff
FROM base
COPY --from=package-builder /path/builded/package_A /path/to/package_A
这样您就不会在服务 A 中公开您的包 A 的代码。然后,在您的 package_A 中引用您决定存储的位置(在我的示例中:/path/to/package_A
) requirements.txt
.
我有一个 monorepo 设置,如下所示:
/serviceA
/serviceB
/packageA
/packageB
我想在 serviceA
中安装 packageA
,这是 docker 容器,里面有 python 服务。
在我的 serviceA
requirements.txt
文件中,我可以引用本地包:file:///Users/me/dev/platform/packageA
,提交到 gcloud builds
时失败,因为包不在该机器上.
我的问题是,我在这里有哪些选择,我是否要按照 correct/best 方式进行此设置?
我的想法是我可以尝试将代码复制到 docker 中,但这似乎有点老套 - 因为我不确定版本会去哪里..
另一种选择是先推送到 GH 并从那里引用,但这意味着我需要以某种方式授予对存储库的访问权限以进行云构建。
您可以使用Docker multi stage build策略:
FROM base as package-builder
COPY your_package_A_code
RUN your_package_build_stuff
FROM base
COPY --from=package-builder /path/builded/package_A /path/to/package_A
这样您就不会在服务 A 中公开您的包 A 的代码。然后,在您的 package_A 中引用您决定存储的位置(在我的示例中:/path/to/package_A
) requirements.txt
.