node.js - 将环境变量从 Gitlab docker 执行器传递到镜像

标签 node.js docker gitlab gitlab-ci gitlab-ci-runner

在我的测试设置中,我使用 Docker 执行器来运行我的构建。我们几乎所有的项目都运行在官方 Node 镜像之一上(即 node:6)。

默认情况下,这些官方图像的日志记录级别设置为相当大的输出。

根据官方文档,可以禁用https://github.com/nodejs/docker-node/blob/master/README.md#verbosity

Verbosity

By default the Node.js Docker Image has npm log verbosity set to info instead 
of the default warn. This is because of the way Docker is isolated from the 
host operating system and you are not guaranteed to be able to retrieve the 
npm-debug.log file when npm fails.

When npm fails, it writes it's verbose log to a log file inside the container. 
If npm fails during an install when building a Docker Image with the docker 
build command, this log file will become inaccessible when Docker exits.

The Docker Working Group have chosen to be overly verbose during a build to 
provide an easy audit trail when install fails. If you prefer npm to be less 
verbose you can easily reset the verbosity of npm using the following 
techniques:

Dockerfile

If you create your own Dockerfile which inherits from the node image you can 
simply use ENV to override NPM_CONFIG_LOGLEVEL.

FROM node
ENV NPM_CONFIG_LOGLEVEL warn
...

Docker Run

If you run the node image using docker run you can use the -e flag to override 
NPM_CONFIG_LOGLEVEL.

$ docker run -e NPM_CONFIG_LOGLEVEL=warn node ...

NPM run

If you are running npm commands you can use --loglevel to control the 
verbosity of the output.

$ docker run node npm --loglevel=warn ...

但是当我从我的 gitlab-ci.yml 文件中引用 docker 镜像时,如下所示:

image: node:6

test:
    script:
        - npm install

如何将环境变量设置日志记录级别传递给我的 docker 执行程序?

最佳答案

gitlab-ci reference 中所列,您可以使用 variables 关键字在配置文件中指定环境变量。在你的情况下,这将是

image: node:6

test:
    variables:
        NPM_CONFIG_LOGLEVEL: warn
    script:
        - npm install

或者,您可以将 --loglevel=warn 添加到 CI 配置脚本部分中的所有 node 命令。

关于node.js - 将环境变量从 Gitlab docker 执行器传递到镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45836229/

相关文章:

c - 让 TCP 客户端搜索 TCP 服务器

javascript - Jade /Expressjs : Pass objects from server to client

node.js - grunt mocha 未找到目标错误

Docker/CoreOS 上的 Java JVM

git - 将工件添加到 gitlab-ci.yml 中的存储库

node.js - BigQuery Node.js API startQuery 不会将数据注入(inject)到目标表中

docker - 如何用docker镜像打包文件

docker - 我可以使用什么命令来查找我正在使用的 docker swarm 版本?

import - Gitlab Wiki - 如何在导入存储库时导入 wiki

git - 将分支移动到另一台具有远程存储库的笔记本电脑