我正在尝试构建一个包含MySQL和一些种子数据的docker镜像,我正在试图弄清楚如何在docker构建阶段将数据插入数据库。
似乎我需要启动MySQL引擎,调用命令来运行一些SQL语句,然后关闭MySQL引擎。关于如何最好地做到这一点的任何好主意?
答案 0 :(得分:3)
构建映像后,将检查文件夹/docker-entrypoint-initdb.d
中是否包含用于向DB植入种子的文件。在official MySQL Docker Hub page上的初始化新实例部分的相应段落下面。
首次启动容器时,将创建一个具有指定名称的新数据库,并使用提供的配置变量对其进行初始化。此外,它将执行在
.sh
中具有扩展名.sql
,.sql.gz
和/docker-entrypoint-initdb.d
的文件。文件将按字母顺序执行。您可以通过将SQL转储安装到该目录中并为自定义图像提供贡献的数据来轻松填充mysql服务。默认情况下,SQL文件将导入到MYSQL_DATABASE变量指定的数据库中。
答案 1 :(得分:2)
This博文可能会对您有所帮助。
基本上,要遵循的步骤是:
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服务器的代码,登录到它然后插入数据。