我有以下 Docker 容器:
网络
(nginx)db
(mysql)
web
容器链接到db
容器。所有标准的东西。
为了数据持久化,我想取data volume container方法。
我希望能够使用这两个容器作为主要应用程序容器来运行多个网站(从技术上来说,web
容器运行主要面向用户的应用程序,db
位于其后面)。
假设我有 siteA
、siteB
和 siteC
使用数据库 A
、B
和 C
分别在 mysql 中。
我希望能够将这些站点的数据库数据分区到 3 个不同的数据卷容器(dataA
、dataB
、dataC
)中,以便可移植性,并将它们集中在一个部署中(一台主机运行 web
、db
、dataA
、dataB
、 dataC
在需要时全部适当链接。
有没有办法将单独的 mysql 数据库分区到各自的数据卷容器中以实现可移植性? AFAIK,mysql 将其所有数据库数据存储在 /var/lib/mysql
以某种方式就 mysql 存储的数据库而言是不透明的。
例如,如果将存储在 mysql 中的不同数据库映射到已知目录,那就太好了 - 在本例中为 /var/lib/mysql/A
、/var/lib/mysql/B
和 /var/lib/mysql/C
。这样,我所要做的就是保留这些目录并将它们安装到 db 容器中。但我认为事实并非如此。
最佳答案
为什么不直接运行数据库容器的多个实例?根据需要映射目录。
docker run -d -v /var/lib/mysql/A:/var/lib/mysql --name dbA my_docker/my_awesome_mysql
docker run -d -v /var/lib/mysql/B:/var/lib/mysql --name dbB my_docker/my_awesome_mysql
docker run -d -v /var/lib/mysql/C:/var/lib/mysql --name dbC my_docker/my_awesome_mysql
如果您只需要将 dbA 移动到另一台主机,这将会有所帮助。
关于mysql - Docker:将mysql数据库拆分到不同数据卷容器中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31769334/