根据Amazon's Elastic Beanstalk Multicontainer Docker Configuration docs,我应该能够使用挂载点在Elastic Beanstalk期望的位置获取NGINX日志。
容器实例中要装入的卷以及装入它们的容器文件系统上的位置。装载包含应用程序内容的卷,以便容器可以读取您在源包中上载的数据,以及用于将日志数据写入Elastic Beanstalk可以收集它的位置的日志卷。
Elastic Beanstalk在容器实例上创建日志卷,每个容器一个,位于/ var / log / containers / containername。这些卷名为awseb-logs-containername,应该挂载到容器文件结构中写入日志的位置。
例如,以下安装点将容器中的nginx日志位置映射到nginx-proxy容器的Elastic Beanstalk生成的卷。
{
"sourceVolume": "awseb-logs-nginx-proxy",
"containerPath": "/var/log/nginx"
}
我在我的应用程序中为两个NGINX容器做了这个,但是当我请求日志时,EB没有提供NGINX日志。
{
"AWSEBDockerrunVersion": 2,
"containerDefinitions": [
{
"name": "gs-api-nginx-versioning",
"image": "829481521991.dkr.ecr.us-east-1.amazonaws.com/gs-api-nginx-versioning:latest",
"memory": 128,
"essential": true,
"mountPoints": [
{
"sourceVolume": "awseb-logs-gs-api-nginx-versioning",
"containerPath": "/var/log/nginx"
}
],
"portMappings": [
{
"hostPort": 80,
"containerPort": 80
},
{
"hostPort": 443,
"containerPort": 443
}
],
"links": [
"gs-api-v1-nginx:v1"
]
},
{
"name": "gs-api-v1-nginx",
"image": "829481521991.dkr.ecr.us-east-1.amazonaws.com/gs-api-v1-nginx:latest",
"memory": 128,
"essential": true,
"mountPoints": [
{
"sourceVolume": "awseb-logs-gs-api-v1-nginx",
"containerPath": "/var/log/nginx"
}
],
"links": [
"gs-api-v1-atlas-vms:atlas-vms",
"gs-api-v1-auth:auth",
"gs-api-v1-clean-zip:clean-zip",
"gs-api-v1-data-alerts:data-alerts",
"gs-api-v1-proc-events:proc-events",
"gs-api-v1-sites:sites"
]
},
<additional container configs>
]
}
任何人都可以看到我在这里错过了导致日志不被收集的内容吗?