我正在尝试创建一个预设有某种模式和种子数据的MySQL Docker容器,这样我就可以将其他容器作为数据库连接到它.我使用可信的dockerfile/mysql映像作为基础,我编写了一个Dockerfile来从该库创建一个新映像并将schema.sql添加到其中.在构建该映像(mysql:base)之后,我一直在尝试在新容器中运行bash,然后进入mysql并创建我的数据库然后导入模式.然后我退出容器并尝试将容器提交到新的Docker镜像.但是,生成的图像不会保留我对MySQL数据库所做的任何更改.它确实持有我在容器中写入的其他文件,但不包括数据库.
这是我用来构建初始映像的Dockerfile(myorg/mysql:base).
FROM dockerfile/mysql:latest
MAINTAINER (me)
ADD schema.sql /data/schema.sql
EXPOSE 3306
# Define working directory.
WORKDIR /data
CMD ["mysqld_safe"]
Run Code Online (Sandbox Code Playgroud)
建立之后,我进入图像:
docker run -i -t myorg/mysql:base bash
Run Code Online (Sandbox Code Playgroud)
并运行MySQL以导入架构:
myslqd_safe &
141218 00:15:56 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
mysql -u root
mysql> CREATE DATABASE mydb;
exit;
mysql -u root -D mydb < schema.sql
Run Code Online (Sandbox Code Playgroud)
我可以进入mysql并验证架构是否已成功导入:
mysql -u root -D mydb -e "SELECT * from tokens;"
Run Code Online (Sandbox Code Playgroud)
此外,如果我进入,/var/lib/mysql我可以看到有一个mydb目录,其中包含与db对应的.frm文件.
但是当我退出并尝试将该容器提交到新图像时:
docker commit -m="import schema.sql" -a="Me" 72c2ff39dd65 …Run Code Online (Sandbox Code Playgroud)