如果测试失败,使docker build失败

时间:2017-12-22 21:48:00

标签: node.js docker mocha

Dockerfile

FROM node:carbon

WORKDIR /usr/src/app

COPY package*.json ./
RUN npm install
RUN npm install gulp -g

COPY . .

run gulp build --build
run npm test

EXPOSE 80
CMD [ "npm", "start" ]

使用mocha --recursive

运行测试

build.sh

docker build -t my-app .
echo $?

如何检测到一个mocha测试失败,因此npm test不应该没问题,且docker build都没有?

我可能在这里错过了一些东西。

3 个答案:

答案 0 :(得分:4)

如果命令的退出代码非零,则Dockerfile中的

RUN将失败。如果发生这种情况,docker build也将失败并返回非零退出代码。

当测试失败时,您的npm test脚本需要返回非零退出代码。

作为参考,您可以像这样检查退出代码:

$ npm test
$ echo $?

答案 1 :(得分:1)

您可以将第run npm test行更改为run npm test || exit 1

快速测试并确认构建失败。这是一个截图。

enter image description here

答案 2 :(得分:0)

我建议遵循一些docker和node app最佳做法。您不应该使用npm install在容器内构建应用程序并在其中运行测试。构建和测试生命周期可以在CI / CD服务器上运行(例如TravisCI https://travis-ci.org/或CircleCI https://circleci.com - 两者都可以免费用于公共GitHub存储库)。在CI管道期间,您可以检测到构建/测试失败,并且可以更轻松地配置CI,以便在发生故障后不构建映像。您的应用程序应该从CI服务器复制到Docker容器中,然后您应该只在容器内启动应用程序。