【发布时间】:2016-06-02 19:38:50
【问题描述】:
我想创建带有 MySQL 数据库的容器和为集成测试加载的转储。每个测试都应该连接到一个新的容器,数据库处于相同的状态。它应该可以读写,但是当测试结束并且容器被销毁时,所有更改都应该丢失。我正在使用来自官方 docker repo 的“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 服务启动,并添加 -h 和 'localhost' 或 docker-machine ip。
如何修复“2)”?或者,有没有更好的方法?
【问题讨论】:
标签: mysql docker integration-testing