如何阅读泊坞窗容器

问题描述:

内部系统环境变量我是很新的泊坞窗。我有一个需求,docker容器应该读取像AWS_INSTANCE_ID这样的系统环境变量,它是aws中的一个实例标识。通常启动时,我曾经使用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" ] 

我如何可以读取泊坞容器这些系统变量添加这些环境变量?

+0

'搬运工运行-e .. .'? – BMitch

+0

的[我如何通过环境变量来Docker容器?(https://stackoverflow.com/questions/30494050/how-do-i-pass-environment-variables-to-docker-containers) – juanlumn

+0

@BMitch可能的复制我无法像AWS那样运行它。我正在使用ECS服务来处理这个问题。 –

在你的项目中创建一个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"] 

现在图像启动时它会自动有环境变量

环境变量可以使用任一environment option to docker run或通过--env-file option到泊坞窗运行运行时,被加入到容器中。