我正在为我的应用程序创建一个CodePipeline,但是AWS ElasticBeanstalk的部署过程失败了,出现了以下错误:
实例部署:源包中缺少“Dockerfile”和“Dockerrun.aws.json”。至少包括其中一个。部署失败。
完整的消息错误是:
部署已经完成,但是有错误:在中止部署期间,一些实例可能已经部署了新的应用程序版本。要确保所有实例运行的版本相同,请重新部署适当的应用程序版本。部署应用程序失败。在实例id(s) 'i-0b8823de2e7376c81‘上执行命令失败。中止了这次行动。实例: i-0b8823de2e7376c81命令在实例中失败。返回代码:1输出:引擎执行遇到错误。实例部署失败。有关详细信息,请参阅“eb-engine.log. For”。实例部署:源包中缺少“Dockerfile”和“Dockerrun.aws.json”。至少包括其中一个。部署失败。
我的环境有3个容器,为了部署这个环境,我使用docker-compose-qa.yml文件,在AWS CodeBuild中,我将该文件定义为工件,如下所示:
artifacts:
files:
- 'docker-compose-qa.yml'The docker-compose-qa.yml
version: '3.8'
services:
sitr-api:
image: ${{ secrets.SITR_API_QA_URI_DOCKER_IMG }}
container_name: sitr-api-qa
environment:
- ASPNETCORE_ENVIRONMENT=QA
ports:
- "9901:80"
volumes:
- "./Host-Logs:/app/App_Data/Logs"
sitr-app:
image: ${{ secrets.SITR_APP_QA_URI_DOCKER_IMG }}
container_name: sitr-app-qa
ports:
- "9902:80"
sitr-nginx:
image: ${{ secrets.SITR_NGINX_QA_URI_DOCKER_IMG }}
container_name: sitr-nginx-qa
depends_on:
- sitr-app
- sitr-api
ports:
- "80:80"eb-engine.log错误:
2021/10/26 22:07:27.977004在执行命令app- Docker特定构建应用程序时出错。停止运行命令。错误: Dockerfile和Dockerrun.aws.json都丢失,中止部署
2021/10/26 22:07:27.977008 INFO执行清理逻辑2021/10/26 22:07:27.977098 INFO CommandService响应:{“状态”:"api_version":"1.0",“结果”:[{“状态”:“失败”,“msg”:“引擎执行遇到错误”。),“返回代码”:1,“事件”:“事件”:“实例部署:'Dockerfile‘和'Dockerrun.aws.json’都丢失在源包中。”至少包括其中一个。部署失败。“,”时间戳“:1635286047,”严重性“:”错误“},{”msg“:”实例部署失败“。有关详细信息,请参阅‘eb-Engin.log’.“、”时间戳“:1635286047、”严重性“:”ERROR“}
我的CodeBuild刚刚构建了一个dotnet应用程序,角折叠,并为应用程序和nginx构建了3码头容器。
如果我手动运行我的docker-compose-qa.yml文件,然后在AWS中选择我的CodeBuild文件,那么发布就成功应用了。
我检查了AWS的S3桶,文件正在被压缩到一个文件夹中作为工件。
问题是:
为什么管道抱怨'Dockerfile'和'Dockerrun.aws.json'文件不存在?如何指定它来使用docker-compose-qa.yml文件?
发布于 2021-10-26 23:45:40
基于这些评论。
该问题是由错误的文件名引起的。它应该被称为docker-compose.yml,而不是docker-compose-qa.yml。重命名文件解决了问题。
https://stackoverflow.com/questions/69730812
复制相似问题