2017-09-27 2 views
-1

Je suis très nouveau dans le docker. J'ai une exigence où le conteneur docker devrait lire la variable d'environnement système comme AWS_INSTANCE_ID qui est un identifiant d'instance dans aws. Normalement, au démarrage, j'ajouter ces variables d'environnement à l'aide d'un script shell comme suitComment lire les variables d'environnement système à l'intérieur du conteneur docker

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:'`" 

actuel Dockerfile

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

Comment puis-je lire ces variables système dans le conteneur Docker?

+0

'docker run -e .. .'? – BMitch

+0

Copie possible de [Comment transmettre les variables d'environnement aux conteneurs Docker?] (Https://stackoverflow.com/questions/30494050/how-do-i-pass-environment-variables-to-docker-containers) – juanlumn

+0

@BMitch Je ne peux pas l'exécuter comme ça dans AWS. J'utilise le service ECS qui va gérer cela. –

Répondre

1

Créer un script shell dans votre projet

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:'`" 

Modifier votre dockerfile au-dessous

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"] 

Maintenant, lorsque l'image démarre, il aura automatiquement l'environnement variables