Amazon web services AWS弹性豆茎与docker版本不正确
我正在使用travis将docker映像从Github部署到AWS elastic beanstalk。该部分正常,实际部署以0退出,S3存储桶中有一个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
.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)
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