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