docker部署mysql包含数据_在MySQL Docker容器中包含数据

博主在尝试优化构建流程,避免在Jenkins上每次构建时花费4-5分钟导入500MB的MySQL数据。他们考虑使用预烘焙数据的Docker容器来加快速度。然而,标准MySQL Docker映像的设计不允许在容器内部直接包含数据,因为数据目录被设置为Docker卷。最终,博主选择从基础Ubuntu映像构建并预装数据,创建新的Docker映像,成功减少了构建时间。
摘要由CSDN通过智能技术生成

这个问题类似于:

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

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

我想用Docker替换这个过程的这一部分.我的想法是,我将拥有一个运行MySQL的Docker容器,并且已经将500MB数据放入容器中,而不是依赖于与容器启动时仅执行MySQL导入的MySQL Docker映像关联的标准进程.根据迄今为止的测试,标准过程需要4-5分钟,我希望将其降低到几秒钟.

我原本以为这是一个常见的用例,但MySQL Docker容器中的预烘焙数据似乎不受欢迎,并且实际上没有任何指导.这种方法.

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

解决方法:

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

我尝试通过从此基础部署容器并对其进行操作来解决此问题,然后再提交新映像.

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

像这样的卷不会保存为提交的一部分,因此您无法操作和保存.此外,该图像具有阻止使用ENTRYPOINT例程操纵这些位置的功能.

所有这些都是设计的,因为设想该图像与持久或独立的数据集一起使用.如果有一个选项可以在容器中包含数据会很好,但这看起来像开发人员真的不想娱乐.

为了解决我的问题,我想回到基础Ubuntu映像,在其上构建我的数据库,并将其提交到新映像,这可以正常工作.容器大小稍微大一些,但作为构建作业的一部分的部署明显比等待基于MySQL的容器在启动时运行500MB导入要快得多.

标签:docker,mysql

来源: https://codeday.me/bug/20190727/1553797.html

Docker是一个开放源代码的虚拟化平台,能够以容器的形式打包和分发应用程序。MySQL是一种流行的开源关系型数据库管理系统。使用Docker部署MySQL可以极大简化安装和配置的过程,并且能够实现数据的持久化。 首先,我们需要在Docker上搜索并选择适合的MySQL镜像。可以通过运行`docker search mysql`命令来查找可用的MySQL镜像。选择合适的镜像后,可以通过`docker pull <镜像名称>`来下载镜像,例如`docker pull mysql:latest`。 下载完成后,我们可以运行以下命令来创建一个MySQL容器: ``` docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=your_password -d mysql:latest ``` 这个命令将会创建一个名为mysql容器,并将MySQL服务的默认端口3306映射到宿主机的3306端口。同样,我们可以设置一个root密码,让MySQL服务有一个基本的访问控制。 这样,MySQL容器就成功运行起来了。我们可以通过`docker ps`命令来查看正在运行的容器。接下来,我们可以使用MySQL客户端连接到该容器。可以通过以下命令登录到MySQL容器内部的MySQL服务: ``` docker exec -it mysql mysql -uroot -p ``` 然后,我们可以在MySQL容器内部使用标准的MySQL命令来管理和操作数据库。 要实现数据的持久化,我们可以将MySQL容器内部的数据目录和宿主机的目录进行挂载。可以使用`-v`参数来指定目录的挂载点。例如: ``` docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=your_password -v /path/to/mysql/data:/var/lib/mysql -d mysql:latest ``` 这将会将MySQL容器内部的`/var/lib/mysql`目录与宿主机上的`/path/to/mysql/data`目录进行挂载,从而实现数据的持久化。 通过以上步骤,我们可以使用Docker部署MySQL,并且实现数据的持久化。这样,我们可以方便地在不同的环境之间快速部署和迁移MySQL数据库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值