2017-02-23 84 views
0

У меня есть два приложения, которые обрабатывают разные, но связанные функции. Я хотел бы развернуть их как единый объект на одном хосте: порт.ElasticBeanstalk MultiContainer docker с nginx

Мой план состоит в том, чтобы использовать многоконтейнерную док-платформу эластичного настила. Каждое приложение будет контейнером.

Как я могу связать их вместе? Можно ли установить и настроить nginx на хосте eb?

+1

Я запустил NGINX в качестве контейнера antoher с портом 80, связанным с хостом. На DockerHub вы должны найти easliy nginx изображение. Я не уверен, как ваши контейнеры должны общаться друг с другом, но я думаю, что, возможно, сокеты хоста будут в порядке. Каждый контейнер создает сокеты и сохраняет их в объеме, доступном для контейнера. – nicq

ответ

0

Вам необходимо определить все контейнеры, которые составляют ваше приложение (вместе с контейнером nginx), в Dockerrun.aws.json.

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

Теперь, когда мы связывали контейнеры приложений с контейнером nginx, мы можем ссылаться на них, используя их имена в качестве имен хостов.

И тогда вам нужно развернуть Dockerrun.aws.json заархивировано вместе с Nginx конфигурации conf.d/default.conf файлом (введено в conf.d папку), в которой необходимо указать

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

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

Пожалуйста, обратитесь к AWS примеру Nginx прокси перед приложением php. http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_v2config.html