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

如何为自动化测试制作带有填充数据库的docker映像?

容学林
2023-03-14

我想创建包含MySQL db和为集成测试加载的转储的容器。每个测试都应该连接到一个新的容器,并且DB处于相同的状态。它应该能够读写,但是当测试结束并且容器被破坏时,所有的更改都应该丢失。我使用的是docker Repo官方版本中的“MySQL”图像。

1)图像的文档建议利用“entrypoint”脚本,它将导入您在特定文件夹中提供的任何.sql文件。据我所知,这将在每次创建新容器时再次导入转储,所以不是一个好的选项。是这样吗?

2)这个SO答案建议使用RUN语句扩展映像,以启动mysql服务并导入所有转储

mysqld_safe mysqld从pid文件/var/run/mysqld/mysqld.pid结束

后接

错误2002(HY000):无法通过套接字“/var/run/mysqld/mysqld.sock”(2)连接到本地MySQL服务器

当我运行build时,即使我可以在原始映像的容器上连接到mysql。我尝试了sleep5来等待mysqld服务启动,并用'localhost'或docker-machine IP添加-h。

共有1个答案

辛可人
2023-03-14

如果重新植入数据是一个昂贵的操作,那么另一个选择是启动/停止Docker容器(以前是用DB和种子数据构建的)。几个月前,我在博客上发表了关于使用Spring Boot、Postgres和Docker进行集成测试的文章,虽然博客的重点是Postgres,但其思想是相同的,可以转换为MySQL

 类似资料:
  • 问题内容: 我有一个简单的用户模型,定义如下: 当我创建一个新的User对象时,我的字段将设置为当前时间。我想要做的是使它每当我将更改保存到User对象时,我的字段就会自动设置为当前时间。 我已经仔细阅读过文档,但是对于我一生来说,我似乎找不到任何对此的引用。我是SQLAlchemy的新手,所以我确实没有任何经验可以借鉴。 问题答案: 只需在列字段中添加或参数: 我更喜欢列名称。;) 有关列插入/

  • 我想使用预先填充的数据库的房间,但我不明白如何告诉房间在哪里找到我的数据库。 现在我将它放在中,当我为房间数据库创建实例时,我是这样创建的: 这样一来,我认为它每次都在创建一个新的数据库,或者说,它没有使用预填充的数据库。 我怎样才能找到我的数据库?

  • 我有一个简单的用户模型,定义如下: 当我创建一个新的User对象时,我的字段被设置为当前时间。我想做的是,每当我保存对我的用户对象的更改时,我的字段会自动设置为当前时间。 我找遍了留档,但我似乎找不到任何与此有关的参考资料。我对SQLAlChemy非常陌生,所以我真的没有以前的经验可以借鉴。 希望得到一些反馈,谢谢。

  • 简介 Laravel 可以用 seed 类轻松地为数据库填充测试数据。所有的 seed 类都存放在 database/seeds 目录下。你可以任意为 seed 类命名,但是更应该遵守类似 UsersTableSeeder 的命名规范。Laravel 默认定义的一个 DatabaseSeeder 类。可以在这个类中使用 call 方法来运行其它的 seed 类从而控制数据填充的顺序。 编写 See

  • 问题内容: 我一直在尝试使用从数据库查询的数据加载TableView,但似乎无法使其正常工作。 这是我第一次尝试用数据库查询项填充数据库的情况,以防我的代码看起来杂乱无章,而且效果不佳。 FXML是通过JavaFx SceneBuilder完成的。 这是数据库查询类: 这是通过JavaFx场景生成器生成的FXML脚本: 问题答案: 这是将数据从数据库填充到tableView的最佳解决方案。 这是参