我正在使用适用于 Windows 的 native Docker(在 Windows 10 上)进行 WordPress 开发。我有两个容器:WordPress 和 MySQL。 MySQL 容器有一个数据卷,在运行之间存储数据库数据。
我使用“docker-compose up -d”启动容器,并使用“docker-compose down”停止。当以这种方式停止时,MySQL 数据会正确保存到数据卷中,当我下次启动它时,我会看到所有更改都已保留。
但是,如果我在不先停止 MySQL 容器的情况下重新启动 Windows 10,则自上次启动以来对数据库所做的更改似乎不会保存。 Docker for Windows 足够智能,可以启动重启前运行的相同卷,但它真的不关心正确关闭它们以保存数据库数据吗?真的是这样还是我误解了什么?
避免系统重新启动时丢失数据的最可靠方法是什么?在重新启动之前手动停止所有 MySQL 容器是一项繁琐的任务,尤其是当多个服务器正在运行时。也许我可以创建一个脚本来解析“docker ps”输出,并在重新启动之前停止所有 MySQL 容器,但恐怕我可能在这里重新发明轮子。
处理情况的最佳方法是什么?我到处搜索,但没有找到任何关于某个主题的信息。我是唯一需要这个的人吗?我在这里遗漏了什么吗?
非常感谢任何帮助!谢谢!
附注我的 docker-compose.yml 文件是:
version: '2'
services:
db:
image: mysql:5.7
ports:
- "9013:3306"
volumes:
- ./database:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
volumes:
- ./wordpress:/var/www/html
ports:
- "8013:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_TABLE_PREFIX: wpd1_
最佳答案
关于mysql - 如何在重新启动之间在 Windows 10 上保留 MySQL 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44259181/