首页 > 解决方案 > 如何在赛普拉斯测试中执行 docker-compose 命令

问题描述

我的应用项目的根目录包含我的 docker-compose 和 Makefile,以及一个名为 apps 的文件夹。应用程序内部是 api 和前端。我的赛普拉斯安装在前端文件夹中。

我希望能够cy.exec('make reset-fixtures')从赛普拉斯内部运行命令。这会返回一个“没有规则来制作目标重置装置”错误,我认为这可能是因为我正在从树中比我的 Makefile 更深的文件夹执行。因此,我将命令更改为cy.exec('cd ../.. && make reset-fixtures')产生以下结果:

Stderr:
the input device is not a TTY
make[1]: *** [reset-fixtures] Error 1

能够从赛普拉斯内部执行这些 make 命令的最佳方法是什么?

编辑:这是 make 命令:

reset-fixtures:     
@docker-compose exec mongodb /scripts/reset-fixtures.sh

标签: dockermakefilecypress

解决方案


对我有用的是使用-T带有 docker-compos exec 的选项。这可以防止使用 TTY:

-T, --no-TTY docker compose exec     Disable pseudo-TTY allocation. By default docker compose exec allocates a TTY.

这将使其如下所示:

柏树测试

cy.exec('(cd ../; make your_command)')

生成文件

your_command:
  docker-compose exec -T your_container path_to_executable

推荐阅读