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
都没有?
我可能在这里错过了一些东西。
答案 0 :(得分:4)
RUN
将失败。如果发生这种情况,docker build
也将失败并返回非零退出代码。
当测试失败时,您的npm test
脚本需要返回非零退出代码。
作为参考,您可以像这样检查退出代码:
$ npm test
$ echo $?
答案 1 :(得分:1)
答案 2 :(得分:0)
我建议遵循一些docker和node app最佳做法。您不应该使用npm install在容器内构建应用程序并在其中运行测试。构建和测试生命周期可以在CI / CD服务器上运行(例如TravisCI https://travis-ci.org/或CircleCI https://circleci.com - 两者都可以免费用于公共GitHub存储库)。在CI管道期间,您可以检测到构建/测试失败,并且可以更轻松地配置CI,以便在发生故障后不构建映像。您的应用程序应该从CI服务器复制到Docker容器中,然后您应该只在容器内启动应用程序。