Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS弹性豆茎与docker版本不正确_Amazon Web Services_Docker_Amazon Elastic Beanstalk_Travis Ci - Fatal编程技术网

Amazon web services AWS弹性豆茎与docker版本不正确

Amazon web services AWS弹性豆茎与docker版本不正确,amazon-web-services,docker,amazon-elastic-beanstalk,travis-ci,Amazon Web Services,Docker,Amazon Elastic Beanstalk,Travis Ci,我正在使用travis将docker映像从Github部署到AWS elastic beanstalk。该部分正常,实际部署以0退出,S3存储桶中有一个.zip文件 问题是,由于这是我第一次使用AWS,我使用示例应用程序创建了应用程序,因为代码是从Github部署的,部署后,我的运行状况状态为降级(红色感叹号),并显示以下消息: ERROR During an aborted deployment, some instances may have deployed the new applica

我正在使用travis将docker映像从Github部署到AWS elastic beanstalk。该部分正常,实际部署以0退出,S3存储桶中有一个
.zip
文件

问题是,由于这是我第一次使用AWS,我使用示例应用程序创建了应用程序,因为代码是从Github部署的,部署后,我的运行状况状态为降级(红色感叹号),并显示以下消息:

ERROR
During an aborted deployment, some instances may have deployed the new application version. To ensure all instances are running the same version, re-deploy the appropriate application version.
如果我转到“原因”,我会发现:

  • 应用程序部署在2020-05-01T16:01:58Z失败,退出状态为1,错误:引擎执行遇到错误
  • 应用程序版本“travis-e55e05342a8cc16f3f28f8e184735667a9531ffa-1588311901”不正确(部署4)。预期版本为“示例应用程序”(部署1)
我甚至删除了示例应用程序,并重新部署了上载的应用程序,并得到了那个特定的错误。正如您在上一条消息中看到的,我已经部署了3次,得到了相同的结果

最后,我从S3 bucket下载了zip文件,基本上在
src
public
文件夹中找到了根文件夹中的所有文件,如
package.json
.gitignore
所有docker文件等


编辑 我在github中创建了两个独立的回购协议来测试这一点。 第一个repo是Docker容器中的静态页面,非常简单。我在EB中创建了一个环境,并用示例应用程序启动了一切。然后我将更改推送到github,travis完成了它的工作,并将应用程序部署到AWS。这工作正常,应用程序的环境更新没有错误。这是回购协议:

第二个回购是一个简单的react应用程序。同样的过程,使用示例应用程序在EB中创建环境。将代码推送到github,travis完成它的工作并部署到AWS。这失败了,我一直收到相同的错误:

Environment health has transitioned from Info to Degraded. Command failed on all
instances. Incorrect application version found on all instances. Expected version
"Sample Application" (deployment 1). Application update failed 1 second ago and
took 2 minutes.
这是react应用程序的回购协议:

就Docker而言,在我的本地机器上一切都很好


编辑2 根据@stefansundin的建议,我将应用程序重新部署到EB并检查日志。我最后查看了完整日志以了解更多信息,并发现: /var/log/cfn hup.log

2020-05-14 17:07:42,605 [WARNING] Action for aws-eb-command-handler exited with 1, returning FAILURE
2020/05/14 17:07:42.514601 [INFO] Executing instruction: Docker Specific Build Application
2020/05/14 17:07:42.514605 [INFO] start build docker app
2020/05/14 17:07:42.514615 [INFO] fetch image name
2020/05/14 17:07:42.514639 [INFO] authenticate with ECR if the image is in an ECR repo
2020/05/14 17:07:42.514644 [INFO] pull docker image if update is not false in dockerrun.aws.json
2020/05/14 17:07:42.514657 [INFO] Running command /bin/sh -c docker pull node:12-alpine AS builder
2020/05/14 17:07:42.558923 [ERROR] "docker pull" requires exactly 1 argument.
我发现错误的唯一地方是引擎日志文件: /var/log/eb engine.log

2020-05-14 17:07:42,605 [WARNING] Action for aws-eb-command-handler exited with 1, returning FAILURE
2020/05/14 17:07:42.514601 [INFO] Executing instruction: Docker Specific Build Application
2020/05/14 17:07:42.514605 [INFO] start build docker app
2020/05/14 17:07:42.514615 [INFO] fetch image name
2020/05/14 17:07:42.514639 [INFO] authenticate with ECR if the image is in an ECR repo
2020/05/14 17:07:42.514644 [INFO] pull docker image if update is not false in dockerrun.aws.json
2020/05/14 17:07:42.514657 [INFO] Running command /bin/sh -c docker pull node:12-alpine AS builder
2020/05/14 17:07:42.558923 [ERROR] "docker pull" requires exactly 1 argument.
因此,基本上这是在dockerfile中抱怨的:
来自节点:12 alpine AS builder
。您可以在回购协议中看到整个文件:

问题是:为什么我的本地机器不会发生这种情况?如何从build命令中获取文件并将其复制到nginx文件夹

这实际上是我在日志文件中发现的唯一错误。

这么说吧

要解决此问题,请启动另一个部署。您可以重新部署已知可用的早期版本,或者将环境配置为在部署期间忽略运行状况检查,然后重新部署新版本以强制完成部署

您还可以识别并终止运行错误应用程序版本的实例。Elastic Beanstalk将启动具有正确版本的实例,以替换您终止的任何实例。使用EB CLI health命令识别运行错误应用程序版本的实例

是否可以尝试删除运行应用程序的实例并重新安装

此外,您可以使用CodePipeline将代码部署到Elastic Beanstalk,如果您的代码是在travis上构建的,您可以使用S3文件夹作为源代码阶段,并跳过构建过程,然后使用部署阶段将新应用安装到Elastic Beanstalk。在将新应用程序安装到您的环境时,可能存在一些配置错误


我建议您终止您的实例并开始新的实例。如果我把您的问题搞错了,很抱歉。

我没有在Elastic Beanstalk上使用Docker。当我的RubyonElasticBeanstalk部署失败时,我发现如果我从日志中请求最后100行,我通常会发现问题。如果导航到“日志”->“请求日志”->“最后100行”,这可能会对您有所帮助


如果失败,我将SSH连接到实例并查看
/var/log
中的日志。也许,
docker ps
docker日志
会对您有所帮助。

在平台分支上创建新的Web服务器环境时,选择“docker在64位Amazon Linux上运行”,它会起作用。

我在这里解决了这个问题:


这是多阶段Dockerfile的阶段命名问题。只需使用一个未修改的

我对docker容器中的java应用程序也有同样的问题

我尝试了本主题的所有建议,本主题的链接,但没有任何帮助

最后,以下行动起到了帮助作用:

  • 启用增强的健康面板

  • 转到所需环境的扩展面板

  • 选择由于此“版本”问题而崩溃的实例,然后单击重新启动

  • 此外:

    • 在其中一个案例中,我不得不删除所有以前的版本(左面板上的部分),并推送一个新版本,然后才提出上述建议
    • 还要确保您有足够的权限进行部署(codepipeline/deployment)

    我的节点应用程序中也出现了类似的错误:

    Incorrect application version "travis-e55e05342a8cc16f3f28f8e184735667a9531ffa-1588311901" (deployment 4). Expected version "Sample Application" (deployment 1)
    
    我的构建和部署脚本出现的问题已得到纠正(在Jenkins中调试),应用程序在beanstalk中成功部署,没有出现错误


    事实证明,问题不在于Beanstalk或应用程序版本,而在于构建机制。在没有其他功能的情况下需要查看的内容:)

    您好,您能确认您能够在docker本地运行此功能吗?是的,在本地一切正常,生产版本和使用docker compose的开发版本都可以。在开发人员构建的情况下,它甚至可以与热重新加载一起工作。我在windows上,但我使用Linu安装了docker