当我配置Django应用程序以使用容器时,在尝试将进程分成较小的镜像时,我遇到了一个问题。如何将逻辑分解为在自己的容器中运行但访问相同数据库的较小组件?

我意识到在“真正的”微服务环境中,我希望每个服务都使用不同的数据库。但是,考虑一下我有一些逻辑从数据库读取数据并生成CSV文件的情况。

我想将其分解为单独的镜像类型,该镜像仅包含该逻辑并获得特殊的磁盘安装以将文件写入其中。其余应用程序保持无状态。

因此,我只需要两个django应用程序,一个可将数据读写到其数据库中,另一个可用于启动并针对同一数据库运行报告。

选项1:是我继续使用已经定义了模型的同一应用程序。我启动一个容器进行处理,然后启动另一个具有相同图像的容器进行报告。尽管这可行,但将行为隔离到特定应用程序似乎是一个更好的模式。

选项2: ...我的第二种选择是什么?

最佳答案

您是否在环境中使用docker网络?

建议1:(简单,但可以解决您的情况)在两个应用程序中复制了models.py。使用容器数据库名称连接数据库。
如果需要在容器之间调用函数(def),则可以使用API​​的调用,即使用DRF(Django Rest框架)或带有JsonResponse的纯Django。
不要忘记创建 token 来访问此“Api的 call ”

最好的祝福

08-07 19:30
查看更多