如果testing失败,使docker构build失败

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" ] 

testing运行使用mocha --recursive

build.sh

 docker build -t my-app . echo $? 

我怎么能检测到一个摩卡testing失败,因此npm test不应该好,两个docker build没有docker build

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

如果命令的退出代码为非零,则Dockerfile中的RUN将失败。 如果发生这种情况, docker build也会失败,并返回一个非零的退出码。

testing失败时,您的npm test脚本需要返回一个非零的退出代码。

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

 $ npm test $ echo $? 

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

你可以改变行run npm testrun npm test || exit 1 run npm test || exit 1

快速testing并确认构build失败。 这是一个屏幕截图。

在这里输入图像说明