我正在尝试构建一个包含 MySQL 和一些种子数据的 docker 映像,并且我试图弄清楚如何在 docker build 阶段将数据插入数据库。
看来我需要启动 MySQL 引擎,调用一个命令来运行一些 SQL 语句,然后关闭 MySQL 引擎。关于如何最好地做到这一点的任何好主意?
构建映像时,将/docker-entrypoint-initdb.d
检查文件夹中的文件以作为数据库的种子。在MySQL Docker Hub 官方页面上初始化新实例部分的相应段落下方。
首次启动容器时,将使用提供的配置变量创建并初始化具有指定名称的新数据库。此外,它将执行带有扩展名的文件,这些
.sh
文件位于. 文件将按字母顺序执行。您可以通过将 SQL 转储安装到该目录并提供带有贡献数据的自定义图像来轻松填充您的 mysql 服务。SQL 文件将默认导入到 MYSQL_DATABASE 变量指定的数据库中。.sql
.sql.gz
/docker-entrypoint-initdb.d
这篇博文可能会对您有所帮助。基本上,要遵循的步骤是:
1. 创建一个文件(比如 seed_data.sh)并将其放在与 Dockerfile 相同的目录中
2. 在 dockerfile 中添加以下行
ADD resources/seed_data.sh /tmp/
RUN chmod +x /tmp/seed_data.sh
RUN /tmp/seed_data.sh
RUN rm /tmp/seed_data.sh
文件 seed_data.sh 包含用于运行 mysql 服务器、登录到它然后插入数据的代码。