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 createeb 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 MacOSX泊坞窗 - 输入泊坞窗实例

sh 标记并推送泊坞窗图像到泊坞窗集线器

sh [下载并设置HDF 3.0泊坞窗容器]使用此脚本下载并设置HDF泊坞窗容器#hdf #docker #setup#hdf30

泊坞窗操作的新位置

如何优雅地分离无限睡眠泊坞窗以及为啥

作曲家内存限制泊坞窗