【发布时间】:2020-08-16 04:20:34
【问题描述】:
我正在使用 travis 将 docker 映像从 Github 部署到 AWS 弹性 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 存储桶中下载了 zip 文件,发现里面基本上是 src 和 public 文件夹以及根文件夹中的所有文件,例如 package.json、.gitignore 所有 docker 文件,等等
编辑
我在 github 中创建了两个单独的 repos 来测试这个。 第一个 repo 是 Docker 容器中的静态页面,非常简单。我在 EB 中创建了一个环境,并从示例应用程序开始一切。然后我将更改推送到 github,travis 完成它并将应用程序部署到 AWS。这工作正常,应用程序的环境已更新,没有错误。这是回购: https://github.com/rhernandog/docler-static-page-aws
第二个 repo 是一个简单的 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 应用的 repo: https://github.com/rhernandog/react-docker-awseb
就 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
我发现错误的唯一地方是引擎日志文件: /var/log/eb-engine.log
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 中抱怨这个:FROM node:12-alpine AS builder。你可以在 repo 中看到整个文件:https://github.com/rhernandog/react-docker-awseb/blob/master/Dockerfile
关键是:为什么这不会发生在我的本地机器上?我怎样才能真正从构建命令中获取文件并将它们复制到 nginx 文件夹中?
这实际上是我在日志文件中发现的唯一错误。
【问题讨论】:
-
嗨,你能确认你能在本地的 docker 上运行这个吗?
-
是的,在本地一切正常,使用 docker compose 进行生产构建和开发构建。在开发版本的情况下,它甚至可以与热重载一起使用。我在 Windows 上,但我使用 Linux 容器安装了 docker。我什至将 Git 配置更改为在行尾序列中仅使用 LF 而不是 CRLF。
标签: amazon-web-services docker amazon-elastic-beanstalk travis-ci