Node.js 容器不考虑进程的退出状态

Node.js 容器不考虑进程的退出状态,node.js,docker,npm,bamboo,Node.js,Docker,Npm,Bamboo,我对容器中进程的退出代码如何传递给docker感到困惑。 我有一个运行npm运行脚本的容器。 npm运行脚本失败,退出状态为1,但退出状态似乎没有传递给docker进程本身,因为Bambor将构建任务标记为成功 2019年9月30日15:43:53 npm错误!退出状态1 2019年9月30日15:43:53 npm错误! 2019年9月30日15:43:53 npm错误!这可能不是npm的问题。上面可能还有其他日志输出。 2019年9月30日15:43:53 2019年9月30日15:43:5

我对容器中进程的退出代码如何传递给docker感到困惑。 我有一个运行npm运行脚本的容器。 npm运行脚本失败,退出状态为1,但退出状态似乎没有传递给docker进程本身,因为Bambor将构建任务标记为成功

2019年9月30日15:43:53 npm错误!退出状态1
2019年9月30日15:43:53 npm错误!
2019年9月30日15:43:53 npm错误!这可能不是npm的问题。上面可能还有其他日志输出。
2019年9月30日15:43:53
2019年9月30日15:43:53 npm错误!此运行的完整日志可在以下位置找到:
2019年9月30日15:43:53 npm错误/root/.npm/_logs/2019-09-30T13_43_53_321Z-debug.log
2019年9月30日15:43:54停止集装箱运输
2019年9月30日15:43:54 b3efbe0710cc
2019年9月30日15:43:54移除容器
2019年9月30日15:43:55 b3efbe0710cc
2019年9月30日15:43:55完成任务“脚本”,结果:成功
容器由docker run命令启动

docker run -e GIT_REPO=${bamboo_repository_git_repositoryUrl} -e RELEASE_VERSION=${bamboo.release_version} wc-release:1.0.0
其中,发布容器的dockerfile如下所示:

FROM node:12

ENV RELEASE_VERSION=${VERSION}
ENV GIT_REPO=${REPO}

ENV http_proxy=http://***
ENV https_proxy=http://***

COPY .npmrc /root/.npmrc
COPY .gitconfig /root/.gitconfig
COPY .git-credentials /root/.git-credentials

WORKDIR /home/node/app

ENTRYPOINT git clone ${GIT_REPO} /home/node/app && npm install && npm run release:prepare && npm run release:testless -- ${RELEASE_VERSION}
有什么建议吗? 提前谢谢。
需要向bambol发送一个明确的退出代码,这可以通过在bash脚本中使用
set-e
实现。你会得到这样的结果:

#/usr/bin/env bash
set-e
docker run-e GIT_REPO=${bambon_repository\u GIT_repositoryUrl}-e RELEASE_VERSION=${bambon.RELEASE_VERSION}wc RELEASE:1.0.0

Bambol需要发送一个明确的退出代码,这可以通过在bash脚本中使用
set-e
来实现。你会得到这样的结果:

#/usr/bin/env bash
set-e
docker run-e GIT_REPO=${bambon_repository\u GIT_repositoryUrl}-e RELEASE_VERSION=${bambon.RELEASE_VERSION}wc RELEASE:1.0.0

您能提供一个有效的解决方案吗?这取决于一些事情,例如,您是直接运行
CMD[“npm”,“run”]
,还是涉及到一个中间shell脚本。@DavidMaze更新了问题。尝试从此线程探索类似问题的解决方案。您能提供一个解决方案吗?这取决于以下情况,例如,您是直接运行
CMD[“npm”,“run”]
,还是涉及到一个中间shell脚本。@DavidMaze更新了问题。请尝试从此线程探索类似问题的解决方案