docker - ECS Fargate NGINX容器在CloudWatch日志中未显示错误

标签 docker nginx amazon-ecs amazon-cloudwatch aws-fargate

我的Nginx Dockerfile:

FROM nginx:1.15.12-alpine
RUN rm /etc/nginx/conf.d/default.conf
COPY ./nginx/nginx.conf /etc/nginx/conf.d

# Forward request logs to Docker log collector
RUN ln -sf /dev/stdout /var/log/nginx/access.log \
  && ln -sf /dev/stderr /var/log/nginx/error.log
EXPOSE 80
ENTRYPOINT ["nginx", "-g", "daemon off;"]

来自ECS任务定义的容器:
[
  {
    "name": "nginx",
    "image": "<ECR REPO HERE>",
    "networkMode": "awsvpc",
    "essential": true,
    "portMappings": [
      {
        "containerPort": 80,
        "protocol": "http"
      }
    ],
    "logConfiguration": {
      "logDriver": "awslogs",
      "options": {
        "awslogs-group": "mygroup",
        "awslogs-region": "us-east-1",
        "awslogs-stream-prefix": "nginx"
      }
    },
    "essential": true
  }
]

然而,部署任务后,它失败了,在CloudWatch中,我看到以下内容:

enter image description here

我是ECS / Cloudwatch的新手。如何从容器中看到NGINX错误?

最佳答案

  • 您应该检查ECS_Execution_Role_Policy。它应该包含logs权限。像:
  • {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "ecr:GetAuthorizationToken",
                    "ecr:BatchCheckLayerAvailability",
                    "ecr:GetDownloadUrlForLayer",
                    "ecr:BatchGetImage",
                    "logs:CreateLogStream",
                    "logs:PutLogEvents"
                ],
                "Resource": "*"
            }
        ]
    }
    
  • 您应该为ecs_agent驱动程序配置awslogs的配置。

  • 此配置文件路径在主机中为/etc/ecs/ecs.config。该文件应类似于:
    ECS_CLUSTER=test_ecs_cluster
    ECS_AVAILABLE_LOGGING_DRIVERS=["awslogs","json-file"]
    

    See :

    Here's a document

    关于docker - ECS Fargate NGINX容器在CloudWatch日志中未显示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58471103/

    相关文章:

    python - 为斯坦福 NLP 的 NLTK 中的 docker 设置 JAVA_HOME

    node.js - Nodemon 不会在 docker 中使用 Express 更改时重新加载文件

    python - Docker + Google Cloud + chromedriver -> 可执行文件需要位于 PATH 中

    python - 如何在 uWSGI 中正确加载 Flask 应用程序模块?

    php - Laravel+Plupload 上传到 S3 的预检响应无效 - CORS

    windows - Docker 推送到 AWS ECR 在 Windows : no basic auth credentials 上失败

    node.js - docker -/bin/sh : nodemon: not found

    macos - nginx 在本地主机上抛出 403,可能是由于 OS X High Sierra?

    amazon-web-services - 好像每个容器实例不能放置三个以上的任务?

    amazon-web-services - 错误 : Network Configuration must be provided when networkMode 'awsvpc' is specified