2016-04-18 4 views
3

Gibt es eine Möglichkeit, bidirektionale Kommunikation zwischen Andock-Containern unter AWS Beanstalk zu haben?Übergreifende Kommunikation zwischen Andock-Containern in AWS Beanstalk

Der Stapel im Versuch zu arbeiten ist ziemlich Standard: Lack -> Nginx -> PHP-FPM.

Ich verwende die links Spezifikation, um anzugeben, dass nginx den Hostnamen "php-app" finden sollte. Nginx findet den php-app hostname, damit das funktioniert. Allerdings benötige ich auch die "php-app", um den Hostnamen "Lack" auflösen zu können, so dass die "php-app" PURGE-Anfragen nach Cache-Ungültigkeit senden kann.

Grundsätzlich jetzt gibt es nur diese Kommunikation, die funktioniert:

[Lack: 80] -> [nginx: 8080] -> [php-app]

Allerdings sollte dies funktionieren:

[Lack: 80] -> [nginx: 8080] -> [php-app] --- PURGE ---> [Lack: 80]

Die php-app muss grundsätzlich nur über die IP von wissen der Lackwirt scheint jedoch unmöglich zu sein.

Ich weiß, dass ich auch die Lackbehälter ip von dem HOST bekommen, aber ich möchte das gleiche tun, nur aus dem php-App Container:

VARNISH_HASH=`docker ps | grep varnish | sed 's/\|/ /' | awk '{print $1}'` 
VARNISH_IP=`docker inspect --format '{{ .NetworkSettings.IPAddress }}' $VARNISH_HASH` 

Ich versuchte auch Links zu den PHP- Hinzufügen App Container, aber das zu Fehlern führte bei der Bereitstellung, ich denke, es ist, weil es dann zirkuläre Abhängigkeiten:

"links": [ 
    "varnish" 
] 

Mein relevant Dockerrun.aws.json (Container deifinition Datei) sieht wie folgt aus:

{ 
    "AWSEBDockerrunVersion": 2, 
    "volumes": [ 
     ..... 
    ], 
    "containerDefinitions": [ 
    { 
     "name": "nginx-proxy", 
     "image": "nginx", 
     "essential": true, 
     "memory": 128, 
     "links": [ 
     "php-app" 
     ], 
     "portMappings": [ 
     { 
      "hostPort": 8080, 
      "containerPort": 8080 
     } 
     ], 
     "environment": [ 
     { 
      "name": "NGINX_PORT", 
      "value": "8080" 
     } 
     ], 
     "mountPoints": [ .... ] 
    }, 
    { 
     "name": "varnish", 
     "hostname": "varnish", 
     "image": "newsdev/varnish:4.1.0", 
     "essential": true, 
     "memory": 128, 
     "portMappings": [ 
     { 
      "hostPort": 80, 
      "containerPort": 80 
     } 
     ], 
     "links": [ 
     "nginx-proxy", 
     "php-app" 
     ], 
     "mountPoints": [ .... ] 
    }, 
    { 
     "name": "php-app", 
     "image": "peec/magento2-php-fpm-aws", 
     "essential": true, 
     "memory": 1024, 
     "environment": [ 
     ], 
     "mountPoints": [ .... ] 
    } 
    ] 
} 
+0

Haben Sie die Antwort? Ich suche nach etwas ähnlichem, aber ich habe den Eindruck, dass Sie mit dem Multicontainer-Andockfenster auf der gleichen Instanz den Parameter "Links" nicht verwenden müssen. Was war die Lösung? –

Antwort

0

Einfach gesagt müssen Sie Zugriff auf einen Container von anderen erhalten. Sie brauchen nur Aliasnamen für Netzwerke. Ich sehe nicht Ihre Netzwerkkonfiguration für Docker, aber wenn Ihre Bilder "Standard" -Netzwerk verwenden.

varnish: 
    image: newsdev/varnish:4.1.0, 
    networks: 
     default: 
     aliases: 
      - "varnish.local" 

Sie können "varnish.local" in einen beliebigen gültigen Hostnamen ändern. Von anderen Behältern in der „default“ Netzwerk, wird dieser Behälter für ping varnish.local

verfügbar Sie können mehr hier lesen: https://docs.docker.com/compose/compose-file/#aliases

Verwandte Themen