2017-02-23 4 views
0

Ich habe zwei Anwendungen, die verschiedene, aber verwandte Funktionalität behandeln. Ich möchte sie als eine Einheit auf einem einzigen Host bereitstellen: Port.ElasticBeanstalk MultiContainer Docker mit Nginx

Mein Plan ist es, Elasticbeanstalk Multikontainer Docker-Plattform zu verwenden. Jede Anwendung wäre ein Container.

Wie kann ich sie zusammenbinden? Ist es möglich, nginx auf dem eb-Host zu installieren und zu konfigurieren?

+1

Ich habe NGINX als ein Anther-Container mit Port 80, binded Host ausgeführt. Auf DockerHub sollten Sie ein einfaches Nginx-Image finden. Ich bin mir nicht sicher, wie Ihre Container miteinander kommunizieren sollten, aber ich denke, dass Host-Sockets vielleicht in Ordnung wären. Jeder Container erstellt Sockets und speichert sie in einem Volumen, auf das der andere Container zugreifen kann. – nicq

Antwort

0

Sie müssen in Dockerrun.aws.json alle Container definieren, aus denen Ihre Anwendung besteht (zusammen mit nginx container).

{ 
    "AWSEBDockerrunVersion": 2, 
    "volumes": [ 
    { 
     "name": "nginx-proxy-conf", 
     "host": { 
     "sourcePath": "/var/app/current/conf.d" 
     } 
    } 
    ], 
    "containerDefinitions": [ 
    { 
     "name": "first-app", 
     "image": "FIRST_APP_IMAGE_NAME:FIRST_APP_TAG", 
     "environment": [], 
     "essential": true, 
     "memoryReservation": 200, 
     "mountPoints": [], 
     "portMappings": [ 
     { 
      "hostPort": 8081, 
      "containerPort": 8080 
     } 
     ] 
    }, 
    { 
     "name": "secondapp", 
     "image": "SECOND_APP_IMAGE_NAME:SECOND_APP_TAG", 
     "environment": [], 
     "essential": true, 
     "memoryReservation": 200, 
     "mountPoints": [], 
     "portMappings": [ 
     { 
      "hostPort": 8082, 
      "containerPort": 8080 
     } 
     ] 
    } 
    { 
     "name": "nginx-proxy", 
     "image": "nginx", 
     "essential": true, 
     "memoryReservation": 128, 
     "portMappings": [ 
     { 
      "hostPort": 80, 
      "containerPort": 80 
     } 
     ], 
     "links": [ 
     "firstapp", "secondapp" 
     ], 
     "mountPoints": [ 
     { 
      "sourceVolume": "nginx-proxy-conf", 
      "containerPath": "/etc/nginx/conf.d", 
      "readOnly": true 
     } 
     ] 
    } 
    ] 
} 

Jetzt, da wir App-Container mit Nginx-Container verknüpft haben, können wir uns auf sie beziehen, indem wir ihre Namen als Hostnamen verwenden.

Und dann müssen Sie Dockerrun.aws.json gezippt zusammen mit nginx Config conf.d/default.conf Datei (put in conf.d Ordner), in dem Sie

location /firstapp/ { 
    proxy_pass http://firstapp; 
} 

location /secondapp/ { 
    proxy_pass http://secondapp; 
} 

Bitte beachten Sie auch AWS Beispiel für Nginx Proxy beziehen angeben müssen bereitstellen vor der php-anwendung. http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_v2config.html

Verwandte Themen