Docker 数据库即删即建 是我想得太美了吗?

2022-07-09 11:51:50 +08:00
 notgoda
V2 大佬,请问 docker 搭建博客,nginx +php +mysql 三容器.各个都做了 volume 映射:其中 MySQL 如下
image: xxxx:$MYSQL_TAG
container_name: "${PROJECT_NAME}_mysql"

volumes:
- "./drupal/mysql:/var/lib/mysql"
restart: always

因为 Docker 是即删即建,我碰的问题是 docker-compose down 删除所有容器后 执行 docker-compose up -d , 为什么 MySQL 数据库容器没有读取./drupal/mysql 目录数据来恢复到删除前状态,还是要重新进 MySQL 容器执行导入数据库,谢谢解惑!
1164 次点击
所在节点    问与答
7 条回复
huyujievip
2022-07-09 12:20:17 +08:00
数据库一般不要放容器里面吧
nicholasxuu
2022-07-09 13:27:53 +08:00
看看 container 的 log 吧,猜测镜像有问题,没把东西存在默认的地方。或者比如 mac os 里支持有问题,volume mount 没成功。
我这么配置 volume 没问题的。
notgoda
2022-07-09 15:06:53 +08:00
@huyujievip 为什么?目录 mount 到 host 跟虚拟机一样
@nicholasxuu 谢谢!我镜像确认没问题。volume mount 也成功了。请问你 docker-compose down 删除所有容器后 执行 docker-compose up -d , 不需要再重新导入一遍数据库吗?
另外 如果迁移到別的 vps, 请问 只需要把这些所有的 mount 目录迁移到新 vps,也不需要旧 vps 备份数据库然后新的 vps 导入数据库?


@nicholasxuu
licoycn
2022-07-09 15:38:28 +08:00
按理说不应该会出现这样的情况,只要 mysql 的数据存储路径是指向容器内的`/var/lib/mysql`,容器挂载了`./drupal/mysql:/var/lib/mysql`,就会自动加载数据。建议你从`docker logs`和 my.cnf 的配置查看一下有没有什么问题。
Yourshell
2022-07-09 16:13:25 +08:00
bind mounts 后挂载到新容器好像会有权限问题吧,用 named volume 试试
notgoda
2022-07-09 18:48:27 +08:00
@licoycn 谢谢大佬。那如果迁移到別的 vps, 请问 只需要把这些所有的 mount 目录备份 迁移到新 vps, 是否需要在旧 vps 备份数据库然后新的 vps 导入数据库?


@licoycn
licoycn
2022-07-09 19:06:13 +08:00
@notgoda 数据完全迁移过去以及相关配置文件,没多大问题,反正是 docker 不用考虑宿主机环境问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/865087

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX