1 回答
TA贡献1780条经验 获得超4个赞
简短回答:
将映射到 /var/lib/mysql 的数据卷重命名,即将 mysql_data 重命名为 db_data 并docker-compose up
再次运行。
长答案:
我最终想通了这个问题。MariaDB的 docker hub页面稍微涉及这样一个事实,即只有在第一次创建容器时,它才会使用 /docker-entrypoint-initdb.d 中可用的数据库模式进行初始化。
当容器第一次启动时,将使用提供的配置变量创建和初始化具有指定名称的新数据库。此外,它将执行在 /docker-entrypoint-initdb.d 中找到的扩展名为 .sh、.sql 和 .sql.gz 的文件。文件将按字母顺序执行。您可以通过将 SQL 转储装载到该目录中并提供带有贡献数据的自定义图像来轻松填充您的 mariadb 服务。默认情况下,SQL 文件将导入由 MYSQL_DATABASE 变量指定的数据库。
这导致我在 docker-compose 中更改 db 服务名称并重新运行,这不起作用。我还使用 删除了所有停止的容器docker container prune
,这也无济于事。
最后,我认为我所有的docker-compose up
s中一定有一些不变的东西,这与服务名称无关。它是 docker-compose.yml 中的 mysql_data 卷容器。它似乎是一个在您重新部署时不会重新创建的数据层,在我的情况下,它在我第一次运行时初始化错误,可能是因为我没有提供环境变量。因此,我将名称更改为 db_data 并docker-compose up
再次执行了中提琴!这次数据库被初始化,我能够访问我在初始化时在模式文件中引入容器的数据库表。
- 1 回答
- 0 关注
- 235 浏览
添加回答
举报