我正在开发一个应用程序,并尝试实现微服务体系结构。有关地点(城市、邮政编码等)的信息我从opengeodb.org下载了mysql的数据库转储。
现在,我想以码头容器的形式提供数据库。我使用以下Dockerfile设置mysql映像,如mysql映像的docs中提到的那样:
FROM mysql
ENV MYSQL_ROOT_PASSWORD=mypassword
ENV MYSQL_DATABASE geodb
WORKDIR /docker-entrypoint-initdb.d
ADD ${PWD}/sql .
EXPOSE 3306" sql "-folder包含带有原始数据作为insert语句的sql脚本,因此它创建了整个database.The问题,即数据库非常庞大,设置数据库需要很长时间。
所以我想,也许有可能将创建的数据库保存在图像中,因为它是一个仅用于只读操作的静态数据库。
我对对接相当陌生,不太确定如何实现这一目标。
我在Windows 10机器上使用码头。
编辑:我通过以下操作实现了我的目标:
发布于 2018-11-25 11:05:22
您可以使用容器创建卷,以便在本地计算机上持久化数据库。当您第一次创建容器时,将执行/docker-entrypoint-initdb.d中的SQL,并将更改存储到卷中。下次启动容器时,MySQL将看到模式已经存在,并且不会再次运行脚本。
发布于 2018-11-25 11:53:59
原则上,你可以这样做:
docker commit来生成容器当前状态的映像。另一种选择是在映像构建期间加载数据库,但为此,您必须启动mysql,类似于在入口点脚本中的操作方式。
mysql < sql file加载数据https://stackoverflow.com/questions/53466754
复制相似问题