Нам требуются переменные среды в процессе сборки кода. 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 - ни один из них не распечатывается.
Я попытался создать новую сборку кода и добавить переменные среды, но безуспешно.
Обратите внимание, что он создает контейнер докеров, и он не работает, когда я пытаюсь подключиться к моей базе данных 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). Если это не удается, мы откатываем миграцию и выходим из сборки.