我正在使用Docker容器研究云部署。我们的应用程序将使用Apache Tomcat和PostgreSQL数据库。
我的问题是在部署到云中的群集时,为多个客户端配置和维护映像的最佳实践。
我们希望为许多客户使用单个基本映像,而不是为每个客户维护映像。这意味着每个映像部署的新context.xml(为Tomcat应用程序定义数据库连接字符串),因为每个客户都需要连接到自己的数据库。
我知道我可以手动将context.xml文件复制到已部署的容器,直到我们开始在具有许多副本的集群中运行这些容器。这将要求我们将此连接字符串复制到我们创建的每个副本,并在每次使用新版本更新容器时重复此过程。
对于运行相同映像但是每组容器需要自己的数据库连接字符串的许多容器的问题,是否有更好的解决方案?或者有没有办法利用容器编排来更新同时运行同一实例的所有容器中的context.xml文件?
PS。我已经研究过使用环境变量,但context.xml文件是静态的,不会从这些变量加载值。至少这是我的理解。
答案 0 :(得分:0)
您打算如何跟踪数据库连接字符串?他们需要住在某个地方......
服务允许您在Pod之间进行通信,而服务通过选择器定位Pod:因此,您可以拥有一个服务,其目标是同一Pod类型的群集(即您的数据库)
如果每个客户都有一个数据库,则每个客户都需要一个服务。 现在的问题是将每个App Pod指向正确的服务。
部署Pod时,您需要知道将其指向何处。您可以在启动时使用--env=
标志
您还可以为Pod添加标签,如果您想真正实现自动化,则需要某种DB或键值存储来存储以检索 Pod的服务名称,在启动时运行脚本以查找Pod标签的内容并为其获取数据库字符串。