AWS codebuild不会传递环境variables?

我们在编译过程中需要环境variables。 Codebuild允许你在高级设置中设置环境variables,我已经完成了。

现在,当codebuild运行时,它似乎不会传递这些环境variables。

我打印出process.env这里是我得到的:

NAME: '037fga72', [Container] 2017/02/08 01:55:03 NPM_CONFIG_LOGLEVEL: 'info', [Container] 2017/02/08 01:55:03 PATH: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', [Container] 2017/02/08 01:55:03 PWD: '/usr/src/app', [Container] 2017/02/08 01:55:03 SHLVL: '1', [Container] 2017/02/08 01:55:03 HOME: '/root', [Container] 2017/02/08 01:55:03 _: '/usr/local/bin/knex' } 'process.env variables...' 

没有我的环境variables。

我设置DB_PASS,DB_USER,DB_NAME,DB_HOST – 这些都没有打印出来。

我试着创build一个新的codebuild并添加环境variables,但没有运气。

请注意,它正在build设一个docker集装箱,当我尝试连接到我的postgres数据库时失败,因为环境variables没有传递(密码,主机等)

编辑

在我的Dockerfile中,我正在运行下面的bash文件:

 #!/bin/bash echo "running" function mytest { "$@" local status=$? if [ $status -ne 0 ]; then knex migrate:rollback echo "Rolling back knex migrate $1" >&2 exit 1 fi return $status } mytest knex migrate:latest 

这是做什么运行knex迁移(一个js脚本) – 如果失败,我们回滚迁移&退出构build。

Docker不会在构build时将主机级别的环境variables传递给容器,所以默认情况下Codebuild的环境variables不会被提供。 但是,使用构build参数可以将环境variables链接到容器。

例如,采取以下Dockerfile:

 FROM ubuntu:14.04 ARG foo ENV MYVAR=$foo RUN echo $MYVAR 

您可以使用以下命令在容器中设置MYVAR的值:docker docker build -t <tag> --build-arg foo=bar .

以下是docker build过程中的示例输出:

 Sending build context to Docker daemon 2.048 kB Step 1 : FROM ubuntu:14.04 ---> b969ab9f929b Step 2 : ARG foo ---> Using cache ---> a6c71d477a6c Step 3 : ENV MYVAR $foo ---> Running in 49efc25c81d9 ---> ecfc651713b8 Removing intermediate container 49efc25c81d9 Step 4 : RUN echo $MYVAR ---> Running in 2fc43629aa44 bar ---> 86dd113f6c7b Removing intermediate container 2fc43629aa44 Successfully built 86dd113f6c7b 

对于你的特定用例,在--build-arg db_user=$DB_USER build中提供环境variables值--build-arg标志(例如--build-arg db_user=$DB_USER ),然后在你的Dockerfile中通过ENV设置arg的值。

当然,你提到的环境variables没有所有的环境variables,这些variables可以在CodeBuild上运行(包括你所拥有的自定义环境variables)。

是否有可能分享有关您的构build的更多信息? 你是否在你的编译命令中启动了一个新的shell(例如.bash)(可能会replace现有的环境“/ usr / bin / env”)? 什么是你的项目configuration(特别是docker图像)?

你也可以尝试覆盖其中一个项目的命令,只需运行'env'来validation你正在看到预期的环境variables。 这只是为了消除,如果环境是问题或命令。

谢谢!