调试 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部署?