当我配置Django应用程序以使用容器时,在尝试将进程分成较小的图像时,我遇到了一个问题。如何将逻辑分解为在各自的容器中运行但可以访问相同数据库的较小组件?
我意识到在“真正的”微服务环境中,我希望每个服务都有一个不同的数据库。但是,考虑一下我有一些逻辑从数据库读取数据并生成CSV文件的情况。
我想将其分解为单独的图像类型,该图像仅包含该逻辑并获得特殊的磁盘装载以将文件写入其中。其余应用程序保持无状态。
因此,我只需要两个django应用程序,一个可将数据读写到其数据库中,另一个可用于启动并针对同一数据库运行报告的django应用程序。
选项1:是我继续使用已经定义了模型的同一应用程序。我启动一个容器进行处理,然后启动另一个具有相同图像的容器进行报告。尽管这可行,但将行为隔离到特定应用程序似乎是一个更好的模式。
选择2: ...我的选择2是什么?
答案 0 :(得分:0)
您是否在环境中使用docker网络?
建议1:(简单,但可以解决您的情况)在两个应用程序中复制了models.py。使用容器数据库名称连接数据库。 如果您需要在容器之间调用函数(def),则可以使用API的调用,即使用DRF(Django Rest框架)或带有JsonResponse的纯Django。 不要忘记创建令牌来访问此“ Api的呼叫”
最好的问候