node.js - 容器不尊重进程的退出状态
问题描述
我对如何将容器内进程的退出代码传递给 docker 感到困惑。我有一个运行 npm 运行脚本的容器。npm run 脚本失败,退出状态为 1,但退出状态似乎没有传递给 docker 进程本身,因为 Bamboo 将构建任务标记为成功。
30-Sep-2019 15:43:53 npm ERR! Exit status 1
30-Sep-2019 15:43:53 npm ERR!
30-Sep-2019 15:43:53 npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
30-Sep-2019 15:43:53
30-Sep-2019 15:43:53 npm ERR! A complete log of this run can be found in:
30-Sep-2019 15:43:53 npm ERR! /root/.npm/_logs/2019-09-30T13_43_53_321Z-debug.log
30-Sep-2019 15:43:54 Stopping containers
30-Sep-2019 15:43:54 b3efbe0710cc
30-Sep-2019 15:43:54 Removing containers
30-Sep-2019 15:43:55 b3efbe0710cc
30-Sep-2019 15:43:55 Finished task 'Script' with result: Success
容器使用 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}
有什么建议吗?提前致谢。问候
解决方案
Bamboo 需要发送一个明确的退出代码,这可以通过set -e
在 bash 脚本中使用来实现。你会得到这样的东西:
#! /usr/bin/env bash
set -e
docker run -e GIT_REPO=${bamboo_repository_git_repositoryUrl} -e RELEASE_VERSION=${bamboo.release_version} wc-release:1.0.0
推荐阅读
- javascript - 抓取时的响应处理问题
- javascript - 这是对 async/await 的正确理解吗?
- openstack - 在 devstack 中安装 Kubernetes 集群
- dataframe - 文本变量处理
- python - 如何从特定频道狙击消息(discord.py)
- typescript - 如何用字符串文字联合描述数组?
- python - 当我使用 pip 安装任何软件包时,我总是收到此警告,我该如何解决?
- python - 在 github 操作上为 Django 设置 Postgres
- javascript - 如何使用 ajax 更改 fontawsome 类名?
- css - 关注 CSS 绝对位置