簡體   English   中英

AWS Codebuild沒有傳遞環境變量?

[英]AWS codebuild not passing down environment variables?

代碼構建過程中,我們需要環境變量。 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腳本)-如果失敗,我們將回滾遷移並退出構建。

Docker在構建時不會將主機級環境變量傳遞給容器,因此默認情況下不會提供CodeBuild的環境變量。 但是,使用構建參數可以將環境變量鏈接到容器。

例如,使用以下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 --build-arg標志中提供環境變量值(例如--build-arg db_user=$DB_USER ),然后通過Dockerfile中的ENV設置arg的值。

肯定您提到的環境變量並沒有預期可在CodeBuild上運行的所有構建環境變量(包括您擁有的自定義環境變量)。

是否可以共享有關您的構建的更多信息? 您要在構建命令中啟動新的shell(例如bash)(可能替換現有環境“ / usr / bin / env”)嗎? 您的項目配置是什么(特別是docker映像)?

您也可以嘗試覆蓋其中一個項目的命令,並簡單地運行“ env”來驗證您是否看到了預期的環境變量。 這只是為了消除環境是問題還是命令。

謝謝!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM