簡體   English   中英

Python腳本無法訪問某些環境變量

[英]Python script can't access some environment variables

我正在FROM node:8.9.3-alpine (這是Debian)構建Docker Image,然后像往常一樣運行它並傳遞如下參數:

docker run -dt \
-e lsRegion=${bamboo_lsRegion} \
-e lsCluster=${bamboo_lsCluster} \

然后在那個容器中,我導出了一些變量,當我回顯它們時,我可以看到正確的值

export lsEnv=${lsEnv:-'dev'}

稍后在腳本中運行python腳本,當運行print(os.environ)我可以看到lsRegion docker run所有變量docker runlsRegion一樣lsRegion但看不到新導出的像lsEnv這樣的lsEnv

我已經找到並嘗試解決此問題: Python:無法通過調用source ~/.bashrc 訪問新定義的環境變量 ,但找不到該文件。

我努力了

~/.bashrc
/etc/bash.bashrc
/root/.bashrc

但是這兩個都不存在(也不知道這是否能解決我的問題),並且以以下錯誤消息/app/deploy.sh: source: line 16: can't open '/root/.bashrc'


更可重現的示例:

Dockerfile

FROM node:8.9.3-alpine

RUN apk add --no-cache \
    python \
    py-pip \
    ca-certificates \
    openssl \
    groff \
    less \
    bash \
    curl \
    jq \
    git \
    zip \
    build-base \
  && pip install --no-cache-dir --upgrade pip awscli \
  && aws configure set preview.cloudfront true

ENV TERRAFORM_VERSION 0.11.10

RUN wget -O terraform.zip https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_amd64.zip && \
    unzip terraform.zip -d /usr/local/bin && \
    rm -f terraform.zip

RUN apk -v --update add python py-pip
RUN pip install --upgrade awscli
RUN pip install --upgrade boto3

COPY ./build.variables /app/build.variables
COPY ./aws/taskdef/template.json /app/template.json
COPY ./deploy.sh /app/deploy.sh
COPY ./deploy.py /app/deploy.py
COPY ./terraform /app/terraform

CMD ["sh", "/app/deploy.sh"] 

deploy.sh

#!/bin/bash -x

cd /app/terraform
./run-terraform.sh
cd ..
python /app/deploy.py

terraform / run-terraform.sh

   ...
   export lsEnv="NotThere"
   ...

python腳本

#!/usr/bin/env python
import os
print(os.environ)

打印將顯示lsRegionlsCluster但不會顯示lsEnv

如果要影響運行deploy.py的進程的環境,而不是為運行run-terraform.sh的進程創建的環境,則需要在deploy.shrun-terraform.sh源代碼。

#!/bin/bash -x

cd /app/terraform
source ./run-terraform.sh
cd ..
python /app/deploy.py

(您也可以使用. ./run-terraform.shsource是POSIX .命令的可讀性更高的bash同義詞,但是.如果使用不支持source其他兼容POSIX的外殼,則.是必需的。)

我通過在terraform/run-terraform.sh為我在python腳本中需要的每個環境變量調用此命令來解決此問題:

echo "export lsTargetGroup=$lsTargetGroup" >> ~/.bashrc 

然后在deploy.sh我只是在調用python腳本之前添加source ~/.bashrc

暫無
暫無

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

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