Docker的mysql问题

我读过最近的post设置MySQL和导入转储在Dockerfile中,但无法find答案。

我想要的是build立与创build的数据库,用户和其他一些数据的自定义MySQL映像。 这是我的Dockerfile(简体):

FROM mysql:5.7 ENV MYSQL_ROOT_PASSWORD=root RUN service mysql start && \ mysql -uroot -p$MYSQL_ROOT_PASSWORD -e "CREATE DATABASE mydb;" && \ mysql -uroot -p$MYSQL_ROOT_PASSWORD -e "SHOW databases;" && \ service mysql stop ENTRYPOINT service mysql start && /bin/sh 

图像已成功构build,mydb数据库被列为“SHOW DATABASES”的输出。 但是,当我运行容器基于这个图像,我看到根密码是空的,并且mydb数据库丢失。

我该如何解决这个问题? 谢谢?

你可以使用init脚本。 然后运行和停止mysql到RUN命令更容易

初始化一个新的实例

首次启动容器时,将使用提供的configurationvariables创build并初始化具有指定名称的新数据库。 此外,它将执行在/docker-entrypoint-initdb.d中find的具有扩展名.sh,.sql和.sql.gz的文件。 文件将按字母顺序执行。 通过将SQL转储装载到该目录中并提供自定义图像和贡献数据,可以轻松地填充您的mysql服务。 SQL文件将被默认导入到由MYSQL_DATABASEvariables指定的数据库中。