Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 如何在docker-compose.yml中启动测试之前等待数据库迁移完成_Unit Testing_Docker_Database Migration - Fatal编程技术网

Unit testing 如何在docker-compose.yml中启动测试之前等待数据库迁移完成

Unit testing 如何在docker-compose.yml中启动测试之前等待数据库迁移完成,unit-testing,docker,database-migration,Unit Testing,Docker,Database Migration,在docker-compose.yml文件中,我有3个服务。第一个服务用于启动MySQL数据库。第二个服务用于运行多个数据库迁移,以在第一个服务中创建的MySQL数据库中创建表和种子数据。第三个服务用于运行一些需要MySQL数据库的node.js单元测试。问题是,我需要在数据库迁移完成后才开始单元测试。但是我没有办法知道这一点 我曾尝试在单元测试服务中使用depens_on configuration选项使其依赖于数据库迁移服务,但根据Docker文档,仅依赖于保证单元测试服务在数据库迁移服务启

在docker-compose.yml文件中,我有3个服务。第一个服务用于启动MySQL数据库。第二个服务用于运行多个数据库迁移,以在第一个服务中创建的MySQL数据库中创建表和种子数据。第三个服务用于运行一些需要MySQL数据库的node.js单元测试。问题是,我需要在数据库迁移完成后才开始单元测试。但是我没有办法知道这一点


我曾尝试在单元测试服务中使用depens_on configuration选项使其依赖于数据库迁移服务,但根据Docker文档,仅依赖于保证单元测试服务在数据库迁移服务启动后启动。

依赖于选项仅允许您控制启动顺序。
为了检查是否准备就绪,您必须按程序进行检查。您可以编写一个包装器脚本来检查迁移是否完成,也可以使用现有工具,如


您可以在

上找到更多信息,依赖选项仅允许您控制启动顺序。
为了检查是否准备就绪,您必须按程序进行检查。您可以编写一个包装器脚本来检查迁移是否完成,也可以使用现有工具,如


您可以在

Hi Marc上找到更多信息,谢谢您的评论。但迁移服务的问题是,我无法锁定任何端口来检查它是否准备就绪,因为它只使用在第一个服务中设置的MySQL数据库。使用wait for it只能让我知道数据库是否准备就绪,但我无法知道数据库迁移是否完成。你不能通过执行SQL脚本来检查它吗?嗨,Marc,是的,我认为这是一个解决方案。但一个缺点是每次添加新迁移时都需要更新脚本。我只是想知道是否有一种方法可以避免这种情况。你不能在应用程序启动时运行迁移脚本吗?例如,在Java中,有一些库允许您在应用程序启动时运行SQL迁移脚本(请参见或)。您好,谢谢您的评论。但迁移服务的问题是,我无法锁定任何端口来检查它是否准备就绪,因为它只使用在第一个服务中设置的MySQL数据库。使用wait for it只能让我知道数据库是否准备就绪,但我无法知道数据库迁移是否完成。你不能通过执行SQL脚本来检查它吗?嗨,Marc,是的,我认为这是一个解决方案。但一个缺点是每次添加新迁移时都需要更新脚本。我只是想知道是否有一种方法可以避免这种情况。你不能在应用程序启动时运行迁移脚本吗?例如,在Java中,有一些库允许您在应用程序启动时运行SQL迁移脚本(请参阅或)