2017-08-31 16 views
1

Ich versuche eine Umgebungsvariable in der EC2-Instanz zu setzen, die ECS-Container hostet. Die Umgebungsvariable sollte zur Laufzeit vom Docker-Client auf der EC2-Instanz gelesen werden können. Ich weiß, es ist möglich, Userdata hinzufügen wie folgt:Umgebungsvariable zum ECS-Host hinzufügen

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

Aber aus irgendeinem Grund diese env_var nicht vom Docker Client abgeholt wird, wenn ECS Aufgaben instanziieren.

Irgendeine Idee, wie ich das tun könnte? Danke im Voraus.

Antwort

0

Fügen Sie einfach Umgebungsvariablen hinzu? Dann versuchen Sie die folgende

  1. Variable hinzufügen in Dockerfile

    ARG DEV

    ENV DEV = $ {DEV}

  2. Variable hinzufügen, wenn build Docker Bild

    Docker zu bauen. -t Projektname --build argument DEV = False

+0

Dank für die Anregung. Ich möchte, dass der ECS-Andock-Client eine Host-Umgebungsvariable aufnimmt, wenn er ein Bild von ECR als Beispiel [hier] (https://docs.docker.com/engine/security/trust/trust_automation) abruft. Oder eine alternative Lösung wäre, ein Flag "--disable-content-trust = false" zu übergeben, wenn der ECS-Andock-Client "docker pull" ausführt. – cyc115

0

Sie Umgebungsvariablen innerhalb der Aufgabendefinition definieren, die in Ihren Behälter mit Docker der --env Option übergeben wird erhalten. Advanced Container Definition Parameters (nach unten scrollen zu „Umwelt“)

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

Hier ist eine kurze Probe von wo, wie es aussieht auf eine vollständige Aufgabendefinition:

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

Danke @John für den Vorschlag, aber ich versuche, eine Flagge an den Container-Daemon übergeben die ECS-Container (die ich vermute, ist Docker). Nicht zum laufenden Container – cyc115

Verwandte Themen