我正在学习一个教程,用Docker将一个烧瓶应用程序部署到AWS弹性豆茎(EB)。我创建了一个AWS弹性容器注册表(ECR),并运行了一些成功地将Docker映像推送到ECR的命令:
docker build -t app-backend
docker tag app-backend:latest [URL_ID].dkr.ecr.us-east-1.amazonaws.com/app-backend:latest
docker push [URL_ID].dkr.ecr.us-east-1.amazonaws.com/app-backend:latest然后我尝试部署到EB:
eb init (selecting a Docker EB application I created on the AWS GUI)
eb deploy在"eb init“上,”I get the error“无法设置CodeCommit,因为没有源代码管理设置,继续初始化”,但我假设这可以忽略,否则看起来很好。但是,在"eb部署“中,部署失败。在"eb-engine.log“(在AWS GUI中找到)中,我看到了以下错误消息:
错误在执行命令应用程序部署-码头特定的生成应用程序时发生错误。停止运行命令。错误:拉坞图像失败:命令/bin/sh -c停靠器拉出错误退出状态1失败。Stderr:未能注册层:错误处理tar文件(退出状态1):写/根/..cache/pip/http/5/e/7/3/b/长号:设备上没有空间。
当我手动运行pull命令错误引用(本地,而不是来自EB实例)时,该命令的响应似乎与预期的一样:
docker pull [URL_ID].dkr.ecr.us-east-1.amazonaws.com/app-backend:latest是什么导致了这个部署失败?
我的Dockerrun.aws.json文件如下所示:
{
"AWSEBDockerrunVersion": "1",
"Image": {
"Name": "[URL_ID].dkr.ecr.us-east-1.amazonaws.com/app-backend",
"Update": "true"
},
"Ports": [
{
"ContainerPort": 5000,
"HostPort": 5000
}
]
}发布于 2022-11-29 02:12:08
我通过跟踪how to prevent error "no space left on device" when deploying multi container docker application on AWS beanstalk?解决了这个问题。
基本上,您可以在EC2 AWS中找到您的ElasticBean秸秆实例,您可以修改卷以向EB实例添加空间。然后,按照堆栈溢出帖子中的链接,通过SSHing将EB实例重新分区到其中,使用eb ssh,然后使用df -H和lsblk等命令查看每个分区中的空间大小。并使用如下命令:
sudo growpart /dev/xvda 1
sudo xfs_growfs -d / 若要重新分区硬盘驱动器,请使用您在AWS中添加的所有新空间。您可以使用df -H和lsblk检查重新分区是否给了您更多的空间。
然后eb deploy命令就可以工作了。如果SSH尚未安装,您可能必须先执行eb ssh --setup。
https://stackoverflow.com/questions/74597794
复制相似问题