首页 > 解决方案 > 每次我运行“eb deploy”时,AWS ElasticBeanstalk 环境都会进入“严重”状态

问题描述

我有一个通过 Docker 部署到 ElasticBeanstalk 环境中的 React git 项目。我第一次运行eb deploy时没有遇到任何错误,它正确部署到 ElasticBeanstalk 环境中。但是,当我更改源代码时,如果我尝试将其部署到相同的环境中,则会出现错误。

这就是我运行的:

 git add *
 git commit -am "My First Commit"
 docker build -t new-docker-version .
 eb create react-env

然后在创建环境之后,我更改了源代码

 git add *
 git commit -am "Changed Source Code"
 docker rmi new-docker-version
 docker build -t new-docker-version .
 eb deploy

“部署”运行大约 10 分钟,然后进入“严重”状态,原因如下:

Incorrect application version "app-f43da-200915_151515" (deployment 4). Expected version "app-7295-200915_141954" (deployment 1).

如何通过 eb cli 将源代码的更新版本部署到同一环境中?

标签: amazon-elastic-beanstalk

解决方案


这需要相当多的努力和挖掘,可能有更好的答案,但这是我的看法。

为了使其完美运行,不应从控制台面板启动 Elastic Beanstalk 环境,而应从命令行启动。第一步是.elasticbeanstalk在项目的根目录下创建一个文件夹,然后在其中创建一个config.yml如下所示的文件:

branch-defaults:
  production:
    environment: my-prod
  staging:
    environment: my-dev
global:
  application_name: my_application_name
  branch: null
  default_ec2_keyname: my_key_pair
  default_platform: Docker running on 64bit Amazon Linux
  default_region: my_default_region
  include_git_submodules: true
  instance_profile: null
  platform_name: null
  platform_version: null
  profile: null
  repository: null
  sc: git
  workspace_type: Application

之后,回到项目的根目录并运行:

eb init
eb create my-dev

从现在开始,每个人所做的更改都可以通过运行简单地推送到环境中eb deploy

##############################################

我发现更“工业准确”的第二种解决方案是使用 AWS CodePipeline。

这是我遵循的Medium 教程。将 CodePipeline 附加到 git 项目存储库的当前分支后(并且一旦完成上述有关文件config.yml夹下文件的所有步骤.elasticbeanstalk),每次 git 推送后,更改将直接在 ELB 环境中可见。


推荐阅读