4 votes

Docker compose : Format d'interpolation invalide pour l'option "environment" dans le service

Bonjour, dans docker compose j'ai :

 environment:
      - AWS_ACCESS_KEY_ID=$(aws --profile default configure get aws_access_key_id)
      - AWS_SECRET_ACCESS_KEY=$(aws --profile default configure get aws_secret_access_key)

Mais il me renvoie une erreur comme dans le sujet. Quelqu'un sait-il comment passer ces variables ?

Remerciements

2voto

adebasi Points 872

AFAIK, il n'est pas possible de le faire en docker-compose o .env fichiers. Mais vous pouvez définir une variable d'environnement et y faire référence dans votre docker-compose fichier :

$ export AWS_ACCESS_KEY_ID=$(aws --profile default configure get aws_access_key_id)

docker-compose.yaml

environment:
      - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}

2voto

fly2matrix Points 1192

Si l'utilitaire de ligne de commande aws est intégré dans le conteneur, vous pouvez réécrire les commandes comme suit.

environment:
  - AWS_ACCESS_KEY_ID=$$(aws --profile default configure get aws_access_key_id)
  - AWS_SECRET_ACCESS_KEY=$$(aws --profile default configure get aws_secret_access_key)

Et si cette aws se trouve sur le système hôte, alors
vous pouvez définir des variables d'environnement sur votre shell comme (.profile ou .bashrc etc)

export HOST_ACCESS_KEY_ID=$(aws --profile default configure get aws_access_key_id)
export HOST_AWS_SECRET_ACCESS_KEY=$(aws --profile default configure get aws_secret_access_key)

puis le réutiliser dans docker-compose.yml comme suit

environment:
  - AWS_ACCESS_KEY_ID=${HOST_ACCESS_KEY_ID}
  - AWS_SECRET_ACCESS_KEY=${HOST_AWS_SECRET_ACCESS_KEY}

1voto

Nicola Ben Points 3974

Essayez avec un fichier ENV.

$ cat ./Docker/api/api.env
NODE_ENV=test

$ cat docker-compose.yml
version: '3'
services:
  api:
    image: 'node:6-alpine'
    env_file:
     - ./Docker/api/api.env
    environment:
     - NODE_ENV=production

Vous pouvez échapper au symbole $ avec un autre $ [comme ceci $$() ] Référence à : https://docs.docker.com/compose/environment-variables/#the-env-file

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X