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