Elastic Beanstalk 泊坞窗错误
Posted
技术标签:
【中文标题】Elastic Beanstalk 泊坞窗错误【英文标题】:Elastic Beanstalk docker error 【发布时间】:2015-10-08 08:12:07 【问题描述】:我在尝试更新单容器 Docker 应用程序的配置时遇到一个神秘错误。任何人都知道可能导致这种情况的原因,或者如何进行调试?
ERROR [3009] : Command execution failed:
[CMD-ConfigDeploy/ConfigDeployStage0/ConfigDeployPreHook/00run.sh]
command failed with error code 1:
/opt/elasticbeanstalk/hooks/configdeploy/pre/00run.sh
docker: "tag" requires 2 arguments. See 'docker tag --help'.
(ElasticBeanstalk::ActivityFatalError)
【问题讨论】:
【参考方案1】:您可以在 eb create 和 eb clone 命令的命令行中提供环境变量。这些是在创建或克隆任务之前设置的,因此环境会设置它们。
请参阅 eb cli 帮助。比如……
$ eb create -h
...
--envvars ENVVARS a comma-separated list of environment variables as
key=value pairs
...
【讨论】:
【参考方案2】:我和@Shannon 的问题完全相同。我的解决方法是
首先,部署一个保证工作的示例 Dockerfile, 然后设置我真正的 Docker 应用程序需要的所有环境变量, 终于重新部署了真正的 Docker 应用。从AWS documentation 复制粘贴的示例 Dockerfile:
FROM ubuntu:12.04
RUN apt-get update
RUN apt-get install -y nginx zip curl
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
RUN curl -o /usr/share/nginx/www/master.zip -L https://codeload.github.com/gabrielecirulli/2048/zip/master
RUN cd /usr/share/nginx/www/ && unzip master.zip && mv 2048-master/* . && rm -rf 2048-master master.zip
EXPOSE 80
CMD ["/usr/sbin/nginx", "-c", "/etc/nginx/nginx.conf"]
【讨论】:
我认为这是最干净的方法...没有脚本,只是有点破解项目并设置环境变量。 +1 令人失望的 AWS 需要像这样的 hack,因为我认为这是一个常见的场景。在 Web UI 中设置环境时,您应该能够设置环境变量。同时感谢您提供有用的解决方案。【参考方案3】:如果您的应用程序在第一次部署时未能成功启动,则可能会发生这种情况。我自己刚开始遇到这个问题。
查看您服务器上的 /var/log/eb-activity.log...您可能会看到如下内容:
[2015-07-23T00:19:11.015Z] 信息 [2624] - [CMD-Startup/StartupStage1/AppDeployEnactHook/00run.sh]:开始活动...
[2015-07-23T00:19:17.506Z] INFO [2624] - [CMD-Startup/StartupStage1/AppDeployEnactHook/00run.sh]:活动执行失败,因为:jq:错误:无法迭代 null aca80d7accfe4800ff04992e2f89a1e05689423d286deee31b53bf470ce89afb Docker 容器在启动后意外退出:bleBeanFactory.java:942) 在 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:533) ... 93 更多。检查快照日志以获取详细信息。 (ElasticBeanstalk::ExternalInvocationError) 引起:jq:错误:无法迭代null aca80d7accfe4800ff04992e2f89a1e05689423d286deee31b53bf470ce89afb Docker 容器在启动后意外退出:bleBeanFactory.java:942) 在 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:533) ... 93 更多。检查快照日志以获取详细信息。 (执行者::NonZeroExitStatus)
[2015-07-23T00:19:17.506Z] 信息 [2624] - [CMD-Startup/StartupStage1/AppDeployEnactHook/00run.sh]:活动失败。
[2015-07-23T00:19:17.507Z] 信息 [2624] - [CMD-Startup/StartupStage1/AppDeployEnactHook]:活动失败。
[2015-07-23T00:19:17.507Z] 信息 [2624] - [CMD-Startup/StartupStage1]:活动失败。
[2015-07-23T00:19:17.507Z] 信息 [2624] - [CMD-Startup]:已完成活动。结果: 命令 CMD 启动(阶段 1)失败。
接下来,查看 /var/log/eb-docker/containers/eb-current-app 如果您看到了 unexpected-quit.log,那么它应该包含您的应用程序在尝试启动时记录的错误,但未成功.
不幸的是,就我而言,它无法启动,因为缺少环境变量。但是,AWS 阻止我在 beanstalk 处于此状态时更新配置。而且我在创建环境时无法指定环境变量。所以我不确定我会做什么来解决这个问题。
【讨论】:
简单编辑与您的环境关联的 Auto Scaling 组,并将所需的实例数设置为 0(与 Min 相同)。等到您的实例被销毁。当您的 Beanstalk 环境没有实例时,请更新您的环境变量。等待更新完成。将您的 Auto Scaling 组改回来。 TADAAAAA,你解决了你的问题:) 我和香农的问题完全相同。 @kiddouk 您的解决方案对我不起作用,EB 抱怨该值必须 >= 1。 对我的答案在意外退出日志中,谢谢! 查看正确的日志文件是我解决类似问题的原因。【参考方案4】:我以前见过这个,并且相信当 Docker 容器构建失败时会发生这种情况。失败的命令是运行容器的命令,它失败了(IIRC),因为它无法从上一个构建步骤中找到容器。尝试的事情:
使用eb local
是否成功构建了 Docker 容器? (https://aws.amazon.com/blogs/aws/run-docker-apps-locally-using-the-elastic-beanstalk-eb-cli/)
尝试在构建过程中检查 eb-activity.log
是否有错误
终止 EC2 实例或重建 EB 环境(有时较小的实例会出现内存不足错误,从而阻止进一步部署)
【讨论】:
以上是关于Elastic Beanstalk 泊坞窗错误的主要内容,如果未能解决你的问题,请参考以下文章
sh [下载并设置HDF 3.0泊坞窗容器]使用此脚本下载并设置HDF泊坞窗容器#hdf #docker #setup#hdf30