在docker构建中植入mysql数据

在docker构建中植入mysql数据,mysql,docker,Mysql,Docker,我正在尝试构建一个docker映像,其中将包含MySQL和一些种子数据,并且我正在尝试找出如何在docker构建阶段将数据插入数据库 似乎我需要启动MySQL引擎,调用一个命令来运行一些SQL语句,然后关闭MySQL引擎。关于如何最好地做到这一点,有什么好主意吗?博客文章可能会对你有所帮助。 基本上,要遵循的步骤是: 1.创建一个文件(比如seed_data.sh)并将其放在与Dockerfile相同的目录中 2.在dockerfile中添加以下行 ADD resources/seed_data

我正在尝试构建一个docker映像,其中将包含MySQL和一些种子数据,并且我正在尝试找出如何在docker构建阶段将数据插入数据库

似乎我需要启动MySQL引擎,调用一个命令来运行一些SQL语句,然后关闭MySQL引擎。关于如何最好地做到这一点,有什么好主意吗?

博客文章可能会对你有所帮助。 基本上,要遵循的步骤是:
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服务器、登录该服务器然后插入数据的代码。

构建映像时,将检查文件夹
/docker entrypoint initdb.d
中是否有用于为数据库种子的文件。下面是初始化上的新实例一节中的相应段落

第一次启动容器时,将创建具有指定名称的新数据库,并使用提供的配置变量初始化该数据库。此外,它将执行扩展名为
.sh
.sql
.sql.gz
的文件,这些文件位于
/docker entrypoint initdb.d
中。文件将按字母顺序执行。您可以通过将SQL转储装载到该目录中并提供带有贡献数据的自定义图像,轻松地填充mysql服务。默认情况下,SQL文件将导入MYSQL_数据库变量指定的数据库