gpt4 book ai didi

mysql - 如何使用已填充的数据库制作用于自动化测试的 docker 镜像?

转载 作者:行者123 更新时间:2023-11-29 02:18:29 24 4
gpt4 key购买 nike

我想创建带有 MySQL 数据库的容器和为集成测试加载的转储。每个测试都应该连接到一个新的容器,数据库处于相同的状态。它应该能够读取和写入,但是当测试结束并且容器被销毁时,所有更改都应该丢失。我正在使用官方 docker 存储库中的“mysql”图像。

1) image's docs建议利用“入口点”脚本导入您在特定文件夹中提供的任何 .sql 文件。据我了解,每次创建新容器时都会再次导入转储,所以这不是一个好的选择。对吗?

2) 这 SO answer建议使用 RUN 语句扩展该图像以启动 mysql 服务并导入所有转储。这似乎是要走的路,但我不断得到

mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

其次是

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

当我运行构建时,即使我可以在原始图像的容器上正常连接到 mysql。我试过 sleep 5等待 mysqld 服务启动,并使用 'localhost' 或 docker-machine ip 添加 -h。

如何修复“2)”?或者,是否有更好的方法?

最佳答案

如果重新播种数据是一项昂贵的操作,另一种选择是启动/停止 Docker 容器(之前使用数据库和种子数据构建)。我几个月前写了一篇关于这个的博客Integration Testing using Spring Boot, Postgres and Docker虽然该博客的重点是 Postgres,但其思想是相同的,可以翻译成 MySQL

关于mysql - 如何使用已填充的数据库制作用于自动化测试的 docker 镜像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35535671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com