如何为在三节点docker-swarm集群上运行的python flask应用程序挂载公共sqlite数据库文件?

时间:2019-03-31 00:10:09

标签: docker flask docker-compose flask-sqlalchemy docker-swarm

我有一个python flask REST应用程序,该应用程序在部署时会创建一个.db sqlite数据库文件。现在,此应用程序已部署在三节点泊坞窗群集集群上。我使用群集堆栈文件将容器部署在那些节点上。我的问题是现在每个容器都有自己的.db文件,即针对应用程序的每个实例的单独数据库。我想要该数据库文件的公共挂载点,以便每个服务都应访问一个公共数据库。我该如何实施?我是Docker的新手。

1 个答案:

答案 0 :(得分:0)

在整个节点/机器上共享文件并不是Docker可以直接为您解决的问题,但是您可以在shared storage systems的上下文中了解Docker存储驱动程序。这有助于它与NFS,ZFS等解决方案集成。

但是,您提到使用SQLAlchemy驱动程序来使用SQLite和Flask。为了避免麻烦,而不是尝试在三个节点之间共享文件系统,应使用MySQLMariaDBPostgreSQL等数据库服务器(仅举几例) ),所有这些都可以与SQLAlchemy很好地配合使用。这样,您可以使所有的Flask容器都连接到同一数据库容器,而不必尝试与Flask应用程序的所有正在运行的实例共享同一SQLite文件(这将非常频繁地/迅速地对其进行锁定/降级)。

此额外的数据库可以在容器中轻松运行,也可以由docker-compose管理。这样,只有一个节点需要访问文件系统来存储数据库数据。