调试 Elastic Beanstalk Docker 运行失败?

Posted

技术标签:

【中文标题】调试 Elastic Beanstalk Docker 运行失败?【英文标题】:Debugging Elastic Beanstalk Docker run failures? 【发布时间】:2015-08-02 05:59:51 【问题描述】:

我是 EB 和 AWS 的新手,我的 docker 映像构建良好,但无法在 Elastic Beanstalk 上运行。我怀疑他们没有正确连接到数据库,但是,当我从命令行运行“eb 日志”时,我没有得到任何有用的信息。以下是错误:


  "status": "FAILURE",
  "api_version": "1.0",
  "results": [
    
      "status": "FAILURE",
      "msg": "(TRUNCATED)...rrun.aws.json: No such file or directory
        73927c49adff622a1a229d9369bdd80674d96d20f3eb99a9cdea786f4411a368
        Docker container quit unexpectedly after launch: Docker container quit unexpectedly on Wed May 20 17:15:02 UTC 2015:.
        Check snapshot logs for details.
        Hook /opt/elasticbeanstalk/hooks/appdeploy/pre/04run.sh failed.
        For more detail, check /var/log/eb-activity.log using console or EB CLI",
      "returncode": 1,
      "events": [
        
          "msg": "Successfully pulled node:0.12.2-slim",
          "severity": "TRACE",
          "timestamp": 1432142064
        ,
        
          "msg": "Successfully built aws_beanstalk/staging-app",
          "severity": "TRACE",
          "timestamp": 1432142094
        ,
        
          "msg": "Docker container quit unexpectedly after launch: Docker container quit unexpectedly on Wed May 20 17:15:02 UTC 2015:. Check snapshot logs for details.",
          "severity": "ERROR",
          "timestamp": 1432142102
        
      ]
    
  ],
  "truncated": "true"

构建完成后:

[2015-05-20T17:15:02.694Z] INFO  [8603]  - [CMD-AppDeploy/AppDeployStage0/AppDeployPreHook/04run.sh] : Activity execution failed, because: cat: /var/app/current/Dockerrun.aws.json: No such file or directory
  cat: /var/app/current/Dockerrun.aws.json: No such file or directory
  73927c49adff622a1a229d9369bdd80674d96d20f3eb99a9cdea786f4411a368
  Docker container quit unexpectedly after launch: Docker container quit unexpectedly on Wed May 20 17:15:02 UTC 2015:. Check snapshot logs for details. (ElasticBeanstalk::ExternalInvocationError)
caused by: cat: /var/app/current/Dockerrun.aws.json: No such file or directory
  cat: /var/app/current/Dockerrun.aws.json: No such file or directory
  73927c49adff622a1a229d9369bdd80674d96d20f3eb99a9cdea786f4411a368
  Docker container quit unexpectedly after launch: Docker container quit unexpectedly on Wed May 20 17:15:02 UTC 2015:. Check snapshot logs for details. (Executor::NonZeroExitStatus)

docker 容器在本地工作,那么我还能做些什么来找出问题所在?我不断听到有关“快照日志”的消息,但我在哪里可以查看这些快照日志?它们是我已经在运行“eb 日志”的输出吗?

【问题讨论】:

您的项目中有 Dockerrun.aws.json 文件吗? 如果您有 DockerFile,则不需要 Dockerrun.aws.json... 你有没有想过如何阅读日志 如果你可以ssh到ec2实例,那么你可以找到sudo docker ps -a的容器id,然后运行sudo docker logs <id>。主机上也有日志/var/log/eb-docker/containers/ 【参考方案1】:

我有这个问题一两天。我通过 AWS 控制台 > Elastic Beanstalk > 环境 > $YOUR_APPLICATION_ENV

设法查看了日志

在左侧窗格中;

日志 > 请求日志 > 下载 > 在任何文本编辑器中打开。

/var/log/eb-docker/containers/eb-current-app/

按照路径,您将看到导致错误的原因并可以修复它。

【讨论】:

很好但被低估的答案。这对我有帮助。干得好艾伦【参考方案2】:

当我的容器崩溃时,我遇到了这个问题,因为 EBS 和 RDS 之间不允许流量。如果您使用任何数据库,请尝试卷曲它。此外,您可能想尝试sudo docker logs CONTAINER_ID 尝试捕捉有用的东西。尝试从实例手动启动容器也可能有所帮助。有一点可能性会出现。

【讨论】:

【参考方案3】:

假设您对运行容器的 EC2 实例具有 SSH 访问权限,这些日志文件对于在 Beanstalk 中调试单个容器 Docker 实例很有用:

/tmp/docker_build.log /tmp/docker_pull.log /tmp/docker_run.log

为了查看正在运行的进程的错误日志,首先阅读 /tmp/docker_run.log 文件。此文件包含 Docker 进程 ID。像这样的:

c6ae58e4ad77e926f6a8230237acf95771c6b5d80d48fb1bc20591f964fd690c

前几个字符应与命令docker ps 中列出的进程匹配。使用该值在以下目录中查找对应的日志文件:

/var/log/eb-docker/containers/eb-current-app/

文件名格式为eb-docker-ps-id-stdouterr.log

【讨论】:

以上是关于调试 Elastic Beanstalk Docker 运行失败?的主要内容,如果未能解决你的问题,请参考以下文章

Elastic Beanstalk CloudWatch 日志流停止工作 – 如何调试

使用 Elastic beanstalk 调试 Route 53 的高 DNS 查找时间问题

如何调试 AWS Elastic Beanstalk 中的性能问题

如何调试失败的NetCore AWS Elastic Beanstalk部署?

AWS Elastic Beanstalk Rails 4,已部署,需要帮助阅读日志文件和调试

Elastic Beanstalk 泊坞窗错误