扩展mysql Dockerfile

时间:2018-10-05 10:10:07

标签: mysql docker

我创建了以下Dockerfile:

FROM mysql:5.7

ADD assets/geograph.cnf /etc/mysql/conf.d

ENV MYSQL_DATABASE=geograph \
    MYSQL_RANDOM_ROOT_PASSWORD=yes

ADD http://data.geograph.org.uk/dumps/gridimage_base_sample.mysql.gz /docker-entrypoint-initdb.d/gridimage_base_sample.sql.gz

然后我从该Dockerfile创建了一个映像:

docker build --tag geograph:latest .

然后我从该图像创建了一个容器:

docker run --name geograph -e MYSQL_USER=geograph -e MYSQL_PASSWORD=geograph --detach geograph:latest

但是,我注意到了一些意外的行为:

  1. 容器启动,然后停止。 (我已经比较了docker psdocker ps --all。)
  2. geograph数据库不包含gridimage_base_sample.sql.gz创建的mysqldump的数据。 (我已经验证了数据库转储。)

我希望该容器的行为类似于the base MySQL imagemysql:5.7),并带有一些其他配置和一些数据。我在做什么错了?

某些情况:我想使用数据库进行分析,以确保分析结果可重复。我将不会创建/删除记录,并且主机/来宾可能会在同一台计算机上。我已经尝试过使用另一个图像/容器将数据库转储卷曲到volume中,然后在创建geograph容器时装入该卷。这解决了#2,但没有解决#1。 (似乎也不需要两个图像/容器,但这并不是很重要:如果需要两个,则需要两个!)

在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

虽然上面的图像可以ADD进行数据库转储,但是由于权限错误,MySQL图像无法解压缩。 (用户没有写/docker-entrypoint-initdb.d的权限。)这似乎足以使容器停止(#1),并说明了geograph数据库为什么不包含来自{的数据{1}}(#2)。