如果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 test
来run npm test || exit 1
run npm test || exit 1
快速testing并确认构build失败。 这是一个屏幕截图。