【发布时间】:2025-12-03 22:45:01
【问题描述】:
最初,我创建了一个以 mysql 8 作为基础映像的测试 mysql 映像,并将 .sql 文件放在入口点 /docker-entrypoint-initdb 中。 d/ 图片。
成功构建镜像后。使用以下命令执行该图像的容器
docker run -d --rm --name mysql_test_container_old --net=host -v /home/user/mysql_data:/var/lib/mysql mysql_test_image:v1.0
在这个容器中有两张表,外部应用程序将访问数据库并插入一些数据。
我使用以下命令停止了容器
docker stop mysql_test_container
更新了 mysql_test_image 中的架构,在架构中添加了一个表,并使用新标签 v1.1 构建为 mysql_test_image:v1.1
在这种情况下,我想通过使用卷来恢复最后两个表的数据,并希望创建新表,我已使用该表更新了新标签中的架构。 我正在尝试通过使用以下命令来实现这一目标
docker run -d --rm --name mysql_test_container_new --net=host -v /home/user/mysql_data:/var/lib/mysql mysql_test_image:v1.1
但 mysql_test_container_new 并未执行包含三个表的新 .sql 文件,而不仅仅是从卷中复制旧属性。
所以当我去查看 mysql_test_container_new 时,我只能看到两个带有数据的旧表,而新标记图像的架构中提到的新表没有创建.
我不确定这是否可行,或者我应该知道我是否以错误的方式尝试它? 提前致谢
【问题讨论】:
-
查看是否有适用于您的应用程序框架的数据库迁移工具。这将被设计为执行诸如向现有数据库添加新表之类的任务,并且它不是特定于 Docker 的。
标签: mysql docker dockerfile docker-volume