2017-08-31 4 views
1

J'essaie de définir une variable d'environnement dans l'instance EC2 hébergeant des conteneurs ECS. La variable d'environnement doit être lisible par le client docker sur l'instance EC2 lors de l'exécution. Je sais qu'il est possible d'ajouter userData comme ceci:Ajouter une variable d'environnement à l'hôte ECS

#!/bin/sh 
echo export env_var=1 >> /etc/environment 

Mais pour une raison quelconque cette env_var n'est pas pris par le client lors de l'instanciation docker tâches ECS.

Une idée de comment je pourrais y arriver? Merci d'avance.

Répondre

0

Vous ajoutez simplement des variables d'environnement? Ensuite, effectuez les opérations suivantes

  1. Ajouter variable Dockerfile

    ARG DEV

    ENV DEV = $ {DEV}

  2. Ajouter une variable quand construire l'image docker

    build docker. -t projectname --build-arg DEV = False

+0

merci pour suggérer. Je voudrais que le client docker ECS prenne une variable d'environnement hôte quand il tire une image de ECR comme cet exemple [ici] (https://docs.docker.com/engine/security/trust/trust_automation). Ou une autre solution consisterait à passer un indicateur '--disable-content-trust = false' lorsque le client docker ECS exécute' docker pull'. – cyc115

0

Vous pouvez définir des variables d'environnement à partir de la définition des tâches qui se passe dans votre conteneur en utilisant l'option --env Docker. Advanced Container Definition Parameters (faites défiler jusqu'à « environnement »)

"environment" : [ 
    { "name" : "string", "value" : "string" }, 
    { "name" : "string", "value" : "string" } 
] 

Voici un échantillon rapide où son apparence sur une définition de tâche complète:

{ 
    "family": "example-task", 
    "containerDefinitions": [ 
     { 
      "name": "sample-app", 
      "image": "123456789012.dkr.ecr.us-west-2.amazonaws.com/aws-nodejs-sample:v1", 
      "memory": 200, 
      "cpu": 10, 
      "essential": true, 
      "environment": [ 
       { 
        "name": "ENVIRONMENT", 
        "value": "production" 
       }, 
       { 
        "name": "API_HOST", 
        "value": "https://example.com" 
       } 
      ], 
     } 
    ] 
} 
+0

Merci @John pour la suggestion, mais j'essaye de passer un drapeau au démon de récipient exécutant les récipients d'ECS (que je suppose est docker). Pas au conteneur en cours d'exécution – cyc115