当前位置: 首页 > 知识库问答 >
问题:

包括MySQL Docker容器中的数据

余歌者
2023-03-14

但是这个问题的答案并没有解决我的用例。

我有一个MySQL数据库,在生产中有5TB的数据。对于开发,我只需要大约500MB的数据。作为我的应用程序构建的一部分运行的集成测试需要访问MySQL数据库。目前,该数据库正在Jenkins上创建,并且通过构建过程将数据注入其中。这很慢。

我想用Docker替换这个过程的这一部分。我的想法是,我将拥有一个运行MySQL的Docker容器,并且已经将500MB的数据放入容器中,而不是依赖与MySQL Docker映像相关联的标准过程,即只在容器启动时执行MySQL导入。根据到目前为止的测试,标准过程需要4到5分钟,我想把这个过程缩短到几秒钟。

有人有这方面的经验吗?有没有一个很好的理由为什么数据不应该被预焙到一个MySQL Docker容器中?

共有1个答案

哈烨熠
2023-03-14

根据我对此所做的调查,在使用标准MySQL映像作为其基础的容器中包含数据实际上是不可能的。

我试图通过在这个基础上部署一个容器并对其进行操作来解决这个问题,然后再提交一个新的映像。

但是,关于MySQL基映像,有一件关键的事情需要理解。它的数据目录(/var/lib/mysql/)和配置目录(/etc/mysql/)都设置为Docker卷,这意味着它们的内容映射到主机系统上的位置。

像这样的卷不会保存为提交的一部分,所以您无法操作和保存。此外,该图像具有防止使用入口点例程操纵这些位置的功能。

所有这些都是设计好的,因为设想该图像可用于持久数据集或独立数据集。如果有一个将数据包含在容器中的选项就好了,但这看起来像是开发人员真的不想娱乐的东西。

为了解决我的问题,我想回到一个基本的Ubuntu映像,在它上建立我的数据库,并将它提交给一个新的映像,这很好地工作。容器的大小稍大一些,但是作为构建作业的一部分进行部署比等待基于MySQL的容器在启动时运行500MB导入要快得多。

 类似资料:
  • 问题内容: 与我合作的其他数据库泊坞窗(如Postgres)具有一种机制,可在容器首次启动后将一些初始数据导入其空实例中。通常以将SQL文件放在特定文件夹中的形式。 我需要对Neo4j做同样的事情。我想组成一个Neo4j docker映像,其中包含一些数据。什么是正确的方法? 问题答案: 可以实现…有2个要求: 组初始密码,这可能利用来实现,然后 从文件中以密码格式导入数据 样本可能看起来像这样

  • 好的,这是我们得到的: 我们有两个库包,我们已经将它们编译成JAR。 我们用 而且 给我们装进罐子里。 现在我们想将这两个罐子包含到另一个Java项目中。 所以我们有 /project/src/a_pack/helloworld. /project/libs/starwars.jar /project/libs/barwars.jar /project/manifest.txt MANIFEST.

  • 当我将应用程序运行到容器中时,我可以看到以下输出: Docker日志 现在,从docker实例中,我只看到“stdout”: root@3acd2bd90da4:/usr/src/app#./bin/run.sh 它错过了docker日志命令中以Traceback(stderr)开头的错误部分 当我在容器中运行命令时,我能做些什么来打印所有的日志? 谢啦

  • 管理员可在单据模块进行详细数据查看及报表导出的操作,目前单据包括以下数据: 一、订单数据 订单是每个用车行程的详细数据,包括行程时间、里程、金额及实际轨迹等 订单类型:目前只有企业支付和企业支付部分的支付完成订单 数据权限:管理员只可看管理范围内的员工数据 二、叫车凭证 开启叫车凭证的企业,员工在企业版APP企业支付叫车无应答时,自动为用户生成叫车凭证。(实时单5min,预约单10min)。 员工

  • 我所拥有的 预期产出 实际产量 这只是一个例子。在我的真实代码中,我正在对我的全局状态(useContext, useReduer)执行删除操作。 是一个ID数组。

  • 问题内容: 我想为我的Oracle数据库中的一行生成插入字符串,包括在其他表中的所有依赖行(及其依赖行)。 例子: 当我从a_id = 1的行中提取行时,结果应该是该行和相关行的插入字符串: 之所以要这样做,是因为我有一个大型数据库,在此之间存在许多不同的表和约束,我想提取一小部分数据作为测试数据。 问题答案: 可能已经有一些工具可以执行此操作,但是从启动表中任意提取所有行表本身就是一个小开发任务