将ASP.NET Core 2.0部署至Heroku时推送Docker镜像遇阻求助
解决Docker推送至Heroku时卡在Preparing状态的问题
看起来你在推送ASP.NET Core 2.0镜像到Heroku时遇到了推送停滞在Preparing的情况,我来帮你梳理几个常见的排查和解决方向:
1. 确认Heroku认证状态
首先要确保Docker已经正确登录到Heroku的容器注册表。你可以重新执行登录命令,验证认证是否有效:
heroku container:login
执行这个命令后,会自动完成Docker与Heroku注册表的认证绑定,如果之前的认证过期或者失效,这一步能解决很多推送权限问题。
2. 检查网络连接稳定性
推送停滞在Preparing很多时候是网络波动导致的:
- 尝试切换到更稳定的网络环境,比如用有线网络代替无线
- 如果所在环境有网络限制,可尝试调整网络配置(注意符合当地网络规范)
- 先拉取一个小镜像测试网络是否正常,比如执行
docker pull hello-world,看是否能顺利完成
3. 验证Docker镜像构建是否正确
确保你的ASP.NET Core 2.0镜像本身没有问题:
- 先在本地运行镜像测试是否能正常启动:
docker run -p 5000:80 registry.heroku.com/contentfulmvc/web,如果能正常访问应用,说明镜像本身没问题 - 检查Dockerfile是否符合Heroku的ASP.NET Core部署要求,比如是否正确设置了端口——Heroku会动态分配端口,你的Dockerfile里应该包含类似
ENV ASPNETCORE_URLS=http://*:$PORT的配置,让应用能监听正确的端口
4. 重启Docker服务
有时候Docker后台服务的小故障会导致推送异常:
- 停止Docker服务,等待几秒后重新启动,再尝试推送命令
- 如果是Windows/macOS的Docker Desktop,可以直接在托盘图标里选择"Restart"选项
5. 尝试推送单个层(如果必要)
如果某个特定层一直卡住,可以先尝试推送单个层,再推送整个镜像:
docker push registry.heroku.com/contentfulmvc/web:2c234e510117
把上面的2c234e510117替换成你卡住的层ID,完成单个层推送后再执行完整的镜像推送命令。
如果尝试完这些步骤还是有问题,可以把推送时的完整错误日志(如果有的话)贴出来,我再帮你进一步排查。
内容的提问来源于stack exchange,提问作者Cody Moser
相关产品推荐
相关产品推荐

