繁体   English   中英

通过npm启动docker-compose

[英]Starting docker-compose via npm

我有一个小节点应用程序,我想运行一些browsertests。 我想知道最好的方法是什么。 首先,我想把所有东西都放在我的package.json但我不知道如何旋转docker-compose,运行测试,并杀死docker-compose。

例如,我会做类似的事情:

"scripts": {
    "test": "docker-compose up && mocha --ui tdd test/**/*.test.js --reporter spec && docker-compose down

但我不确定这是可能的。

现在用什么来实现这个目标? 提前致谢。

干杯

您的测试似乎在测试夹具到达服务可用点之前尝试访问服务时出现同步问题。 (例如,它可能类似于具有侦听API请求的HTTP服务器的节点应用程序。)

当您进行docker-compose up -d ,docker-compose进程会在内部容器化服务创建其套接字并开始侦听连接之前退出。 这意味着如果您接下来要做的是运行尝试打开与docker-compose启动的服务的连接的测试,则存在服务可能尚未可用的竞争条件。

您必须进行测试,以便在尝试打开连接时,如果遇到超时,则会重试几次(允许您的容器有足够的时间和重试次数达到他们正在监听的状态并准备好放弃之前的服务请求。)

您通常只能拥有一个简单的独立应用程序,该应用程序会反复尝试打开服务端口,并在成功时返回成功(如果超时,则会重新尝试返回错误)。 在运行测试之前插入此项以确保您的服务已达到侦听状态。

我强烈建议阅读Docker Compose:等待依赖关系

那篇文章描述了一个很好的小docker-image,你可以反复尝试打开一个TCP端口,直到它成功为止。 您可以使用它将测试与测试所需的测试夹具服务同步。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM