我们在代码构建过程中需要环境变量。Codebuild 允许您在高级设置中设置环境变量,我已经这样做了。
现在,当codebuild运行时,它似乎并没有将这些环境变量向下传递。
我打印出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...'
没有我的环境变量。
我设置了 DB_PASS、DB_USER、DB_NAME、DB_HOST - 这些都没有打印出来。
我尝试创建一个新的代码构建并添加环境变量,但没有运气。
请注意,它正在构建一个 docker 容器,当我尝试连接到我的 postgres 数据库时它失败了,因为没有传递环境变量(密码、主机等)
编辑
在我的 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 脚本)——如果失败,我们将回滚迁移并退出构建。