首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头中巨大的静态(mysql)数据库

问码头中巨大的静态(mysql)数据库
EN

Stack Overflow用户
提问于 2018-11-25 10:55:10
回答 2查看 313关注 0票数 1

我正在开发一个应用程序,并尝试实现微服务体系结构。有关地点(城市、邮政编码等)的信息我从opengeodb.org下载了mysql的数据库转储。

现在,我想以码头容器的形式提供数据库。我使用以下Dockerfile设置mysql映像,如mysql映像的docs中提到的那样:

代码语言:javascript
复制
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机器上使用码头。

编辑:我通过以下操作实现了我的目标:

  1. 如前所述,我添加了sql转储文件。
  2. 我运行了容器,并构建了一个本地目录( 'data‘文件夹),并将其安装到/var/lib/mysql。
  3. 然后停止容器并编辑Dockerfile: 从mysql、MYSQL_ROOT_PASSWORD=mypassword、ENV、MYSQL_DATABASE、geodb、WORKDIR /var/lib/mysql复制${PWD}\data。曝光3306 因此,生成的数据库现在正在从本地系统复制到容器中。
EN

回答 2

Stack Overflow用户

发布于 2018-11-25 11:05:22

您可以使用容器创建卷,以便在本地计算机上持久化数据库。当您第一次创建容器时,将执行/docker-entrypoint-initdb.d中的SQL,并将更改存储到卷中。下次启动容器时,MySQL将看到模式已经存在,并且不会再次运行脚本。

https://docs.docker.com/storage/volumes/

票数 0
EN

Stack Overflow用户

发布于 2018-11-25 11:53:59

原则上,你可以这样做:

  1. 启动容器
  2. 加载数据库
  3. 执行docker commit来生成容器当前状态的映像。

另一种选择是在映像构建期间加载数据库,但为此,您必须启动mysql,类似于在入口点脚本中的操作方式。

  1. 后台启动mysql
  2. 等待它初始化
  3. 使用mysql < sql file加载数据
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53466754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档