共享 python 代码库可作为跨多个应用(docker 映像/容器)的本地依赖项提供

Shared python codebase available as a local dependency across multiple apps (docker images/containers)

提问人:MYK 提问时间:10/29/2022 最后编辑:MYK 更新时间:1/6/2023 访问量:87

问:

这可能是 How to include files outside of Docker 的构建上下文? 但是......

我希望有一个共享的 python 代码库作为跨多个应用程序(docker 映像/容器)的本地依赖项。

目录结构如下所示:

my-projects/
   |-projectlib/
   |   |-__init__.py
   |   |-utils.py
   |
   |-my-app-1/
   |   |-app.py 
   |   |-Dockerfile
   |   |-docker-compose.yaml
   |
   |-my-app-2/
       |-app.py 
       |-Dockerfile
       |-docker-compose.yaml

我希望两者都在 docker 映像中“拥有”projectlib 供他们使用。也就是说,当我调用内部时,我希望它像构建上下文一样构建:app.pydocker compose buildmy-app-1

|-my-app-1/
   |-app.py 
   |-Dockerfile
   |-docker-compose.yaml
   |projectlib/
      |-__init__.py
      |-utils.py

这是因为在我内心深处app.py

from projectlib.utils import connect_to_db

等。。

为什么?原因如下:

  1. 我每天进行多次更改。我不想在每个 my-app-* 文件夹中都有一个副本,因为担心它们可能会不同步。projectlib
  2. 理想情况下,该文件夹将被映射/挂载到容器 - 这样当我编辑文件时,它会被当前正在运行的文件“热重载”(这些是 streamlit 和 fastApi 应用程序)。projectlib/utils.pyapp.py

请注意,这都是我的开发过程。我并不疯狂 - 如果我保存带有语法错误的文件,所有应用程序同时崩溃的想法多么有趣,部署过程是分开的utils.py

一些替代方案:

  1. 我可以通过 bash 脚本复制到构建上下文中,然后调用projectlib/docker compose build

这是可以做到的吗?

python docker docker-compose

评论

0赞 jsstuball 11/5/2022
尝试添加 python 标签,因为它和 docker 问题一样是 python 问题,我处于类似位置
0赞 CedricDeBoom 1/5/2023
这将非常有用。投票。
0赞 MYK 1/6/2023
已按要求添加标记。

答: 暂无答案