我有一个python flask REST应用程序,该应用程序在部署时会创建一个.db sqlite数据库文件。现在,此应用程序已部署在三节点泊坞窗群集集群上。我使用群集堆栈文件将容器部署在那些节点上。我的问题是现在每个容器都有自己的.db文件,即针对应用程序的每个实例的单独数据库。我想要该数据库文件的公共挂载点,以便每个服务都应访问一个公共数据库。我该如何实施?我是Docker的新手。
答案 0 :(得分:0)
在整个节点/机器上共享文件并不是Docker可以直接为您解决的问题,但是您可以在shared storage systems的上下文中了解Docker存储驱动程序。这有助于它与NFS,ZFS等解决方案集成。
但是,您提到使用SQLAlchemy驱动程序来使用SQLite和Flask。为了避免麻烦,而不是尝试在三个节点之间共享文件系统,应使用MySQL,MariaDB或PostgreSQL等数据库服务器(仅举几例) ),所有这些都可以与SQLAlchemy很好地配合使用。这样,您可以使所有的Flask容器都连接到同一数据库容器,而不必尝试与Flask应用程序的所有正在运行的实例共享同一SQLite文件(这将非常频繁地/迅速地对其进行锁定/降级)。
此额外的数据库可以在容器中轻松运行,也可以由docker-compose
管理。这样,只有一个节点需要访问文件系统来存储数据库数据。