我创建了以下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
但是,我注意到了一些意外的行为:
docker ps
和docker ps --all
。)geograph
数据库不包含gridimage_base_sample.sql.gz
创建的mysqldump
的数据。 (我已经验证了数据库转储。)我希望该容器的行为类似于the base MySQL image(mysql:5.7
),并带有一些其他配置和一些数据。我在做什么错了?
某些情况:我想使用数据库进行分析,以确保分析结果可重复。我将不会创建/删除记录,并且主机/来宾可能会在同一台计算机上。我已经尝试过使用另一个图像/容器将数据库转储卷曲到volume中,然后在创建geograph
容器时装入该卷。这解决了#2,但没有解决#1。 (似乎也不需要两个图像/容器,但这并不是很重要:如果需要两个,则需要两个!)
在此先感谢您的帮助。
答案 0 :(得分:0)
虽然上面的图像可以ADD
进行数据库转储,但是由于权限错误,MySQL图像无法解压缩。 (用户没有写/docker-entrypoint-initdb.d
的权限。)这似乎足以使容器停止(#1),并说明了geograph
数据库为什么不包含来自{的数据{1}}(#2)。