我有一个运行MySQL镜像的Docker文件。
version: '3'
services:
mysql:
image: "mysql:5.7"
container_name: "mysql"
ports:
- "6603:3306"
volumes:
- ./assets/schema.sql:/docker-entrypoint-initdb.d/init.sql
environment:
DATABASE_HOST: mysql
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: mydb
MYSQL_USER: mysql
MYSQL_PASSWORD: pass我在本地运行它,但在投入生产之前我有一些顾虑。
数据备份是如何进行的?我应该继续将容器提交到镜像吗?
我是Docker的新手,所以我想知道通过Docker部署的数据库在生产中是如何处理的。
发布于 2019-05-26 15:30:14
我不认为你应该将容器提交给镜像。数据是由容器管理的东西,但它不是数据库容器的“一部分”。如果你想在两次容器重启之间存储数据,你应该使用卷-这样你就可以将数据保存在你的主机卷上,并用这个卷运行更多的mysql容器,共享相同的数据。有关如何将卷与mysql镜像一起使用的信息,请参阅其documentation - Where to Store Data部分。
另外,如果您想转储数据库,也可以在Creating database dumps一节的文档中进行描述。
如果你正在运行更多的数据库容器,并且你想要生成转储,你应该以某种方式自动化这个过程,例如,作为Jenkins作业可以访问你的容器,或者一些脚本在你的docker主机上作为cron作业运行-这都取决于你使用的是什么工具。
发布于 2019-05-26 15:30:03
您应该添加卷以包含实际的数据库文件。由于某些原因,您当前只有模式,当您的容器发生故障时,您的数据将丢失。将卷添加为永久卷后,可以使用标准备份方法,例如cron作业。
https://stackoverflow.com/questions/56311426
复制相似问题