我有以下目录布局
./www/index.php
Dockerfile
apache-config.conf
然后我压缩文件并将其上传到Elastic Beanstalk,但是我收到以下错误消息:
[Instance: i-572d1ae8] Command failed on instance. Return code: 1 Output: Dockerfile and Dockerrun.aws.json are both missing, abort deployment. Hook /opt/elasticbeanstalk/hooks/appdeploy/pre/03build.sh failed. For more detail, check /var/log/eb-activity.log using console or EB CLI.
日志文件包含以下消息:
AppDeployPreHook/01unzip.sh] : Completed activity. Result:
Archive: /opt/elasticbeanstalk/deploy/appsource/source_bundle
creating: /var/app/current/DI_Test/
inflating: /var/app/current/DI_Test/.DS_Store
creating: /var/app/current/__MACOSX/
creating: /var/app/current/__MACOSX/DI_Test/
inflating: /var/app/current/__MACOSX/DI_Test/._.DS_Store
inflating: /var/app/current/DI_Test/apache-config.conf
inflating: /var/app/current/DI_Test/Dockerfile
inflating: /var/app/current/__MACOSX/DI_Test/._Dockerfile
creating: /var/app/current/DI_Test/www/
inflating: /var/app/current/DI_Test/www/.DS_Store
creating: /var/app/current/__MACOSX/DI_Test/www/
inflating: /var/app/current/__MACOSX/DI_Test/www/._.DS_Store
inflating: /var/app/current/DI_Test/www/index.php
[2015-10-29T14:01:33.279Z] INFO [2865] - [Application deployment/StartupStage0/AppDeployPreHook/03build.sh] : Starting activity...
[2015-10-29T14:01:33.579Z] INFO [2865] - [Application deployment/StartupStage0/AppDeployPreHook/03build.sh] : Activity execution failed, because: Dockerfile and Dockerrun.aws.json are both missing, abort deployment (ElasticBeanstalk::ExternalInvocationError)
caused by: Dockerfile and Dockerrun.aws.json are both missing, abort deployment (Executor::NonZeroExitStatus)
为什么我的dockerfile没有在这里读取?我可以构建图像并在没有Elastic Beanstalk的情况下运行它。
答案 0 :(得分:2)
我也遇到过这个问题。似乎还需要Dockerrun.aws.json
文件。我相信这是因为其他文件包含在应用程序中。如果您只有Dockerfile
而没有其他内容,则不需要。
以下是文档:http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_image.html
答案 1 :(得分:1)
您不需要在zip文件中包含父目录。假设你要压缩./www/index.php,Dockerfile和apache-config.conf,
zip dist.zip Dockerfile ./www/index.php apache-config.conf
上传dist.zip。 http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.deployment.source.html
答案 2 :(得分:1)
压缩项目文件夹中的内容(进入项目文件夹并压缩所有内容),而不是压缩项目文件夹。
答案 3 :(得分:1)
超级新手错误,但是当我遇到这个问题时是因为我的Dockerfile
实际上是Dockerfile.txt
。删除.txt
扩展名并创建一个普通文件后,它工作正常。
答案 4 :(得分:0)
我有一个不同的问题。直接使用json,Dockerrun文件可以采用Dockerrun_${DOCKER_TAG}.aws.json
。
解决方案:在拉链中,只允许Dockerrun.aws.json
。
答案 5 :(得分:0)
两个可能的问题:
1)压缩文件夹时,输入文件夹并从命令行压缩,或者在finder中单独选择每个文件,然后一起压缩。 示例:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/applications-sourcebundle.html
2)Elastic Beanstalk区分大小写,因此请确保您的文件被标记为“ Dockerfile”而不是“ dockerfile”
答案 6 :(得分:0)
分享另一种可能性:
您正在测试eb,并且刚刚添加了Dockerfile。
根据doc
如果已安装git,则EB CLI使用git archive命令创建一个 最新的git commit命令内容中的.zip文件。
这就是说,如果您的Dockerfile未提交,则不会被压缩,因此您的实例找不到它。
答案 7 :(得分:0)
在我的情况下,Dockerfile
名称(即DockerFile)中存在拼写错误。 Elastic Beanstalk区分大小写。
答案 8 :(得分:0)
我正在尝试上传一个包含单个文件Dockerrun.aws.json的zip。但是docs声明:
如果仅使用Dockerfile或仅Dockerrun.aws.json文件部署应用程序,则无需创建.zip文件
因此您可以简单地上传一个或另一个而无需压缩。
答案 9 :(得分:0)
记录文档的另一种方法-错误地将Dockerfile添加到.ebignore文件中。我正在测试非docker和docker部署并在同一目录下工作。显然,常规部署不需要Dockerfile,但是在进行Docker部署时,不应将Dockerfile添加到.ebignore。