Amazon web services 如何读取docker容器中的系统环境变量

Amazon web services 如何读取docker容器中的系统环境变量,amazon-web-services,docker,amazon-ecs,Amazon Web Services,Docker,Amazon Ecs,我对docker很陌生。我有一个要求,docker容器应该读取系统环境变量,比如AWS_INSTANCE_ID,它是AWS中的一个实例ID。通常在启动时,我使用shell脚本添加这些环境变量,如下所示 EC2_INSTANCE_ID="`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id || die \"wget instance-id has failed: $?\"`" test -n "$EC2_INS

我对docker很陌生。我有一个要求,docker容器应该读取系统环境变量,比如AWS_INSTANCE_ID,它是AWS中的一个实例ID。通常在启动时,我使用shell脚本添加这些环境变量,如下所示

    EC2_INSTANCE_ID="`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id || die \"wget instance-id has failed: $?\"`"
test -n "$EC2_INSTANCE_ID" || die 'cannot obtain instance-id'
export EC2_INSTANCE_ID=$EC2_INSTANCE_ID
EC2_AVAIL_ZONE="`wget -q -O - http://169.254.169.254/latest/meta-data/placement/availability-zone || die \"wget availability-zone has failed: $?\"`"
test -n "$EC2_AVAIL_ZONE" || die 'cannot obtain availability-zone'
export EC2_AVAIL_ZONE=$EC2_AVAIL_ZONE
EC2_REGION="`echo \"$EC2_AVAIL_ZONE\" | sed -e 's:\([0-9][0-9]*\)[a-z]*\$:\\1:'`"
当前Dockerfile

    FROM node:boron
WORKDIR /usr/src/app
# Install app dependencies
COPY package.json .
RUN npm install
# Bundle app source
COPY . .
CMD [ "npm", "start" ]

如何在Docker容器中读取这些系统变量?

使用或通过to Docker运行时,可以将环境变量添加到容器中。

在项目中创建shell脚本

env.sh

EC2_INSTANCE_ID="`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id || die \"wget instance-id has failed: $?\"`"
test -n "$EC2_INSTANCE_ID" || die 'cannot obtain instance-id'
export EC2_INSTANCE_ID=$EC2_INSTANCE_ID
EC2_AVAIL_ZONE="`wget -q -O - http://169.254.169.254/latest/meta-data/placement/availability-zone || die \"wget availability-zone has failed: $?\"`"
test -n "$EC2_AVAIL_ZONE" || die 'cannot obtain availability-zone'
export EC2_AVAIL_ZONE=$EC2_AVAIL_ZONE
EC2_REGION="`echo \"$EC2_AVAIL_ZONE\" | sed -e 's:\([0-9][0-9]*\)[a-z]*\$:\\1:'`"
将dockerfile修改为以下内容

FROM node:boron
WORKDIR /usr/src/app
# Install app dependencies
COPY package.json .
RUN npm install
# Bundle app source
COPY . .
COPY env.sh /etc/profile.d/awsenv.sh
ENTRYPOINT ["/bin/sh", "-lc"]
CMD ["env && exec npm start"]

现在,当映像启动时,它将自动运行环境变量

docker run-e…
?可能重复@BMitch,我无法像在AWS中那样运行它。我正在使用ECS服务来处理这个问题。您正在使用哪些图像?您需要自定义您的图像才能执行此操作this@TarunLalwani我正在使用ECS优化的AMI