コードビルドプロセス中に環境変数が必要です。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 スクリプト) の実行です。失敗した場合は、マイグレーションをロールバックしてビルドを終了します。