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。 这只是为了消除,如果环境是问题或命令。
谢谢!
- 我如何才能获得与AWS / Debian合作的cadvisor(Docker)?
- 如何将EC2实例注册到ECS集群?
- 如何在Elastic Beanstalk应用程序中的Docker容器之间共享卷?
- 在Docker容器中获取弹性beanstalk环境variables
- 运行多容器Docker的AWS BeanStalk环境无法启动Health:Severe
- 用Dockerconfigurationbitbucketstream水线连接到AWS
- 厨师不启动docker集装箱
- Docker容器中的Elasticsearch,AWS中的集群发现
- systemd,docker或systemd-journal(在稳定的CoreOS上)使用高CPU