通过Circle CI部署Spring Boot应用到Heroku失败求助
解决Circle CI部署Spring Boot到Heroku时的"No images to push"错误
问题描述
尝试通过Circle CI流水线将Spring Boot应用部署至Heroku平台时失败,错误日志如下(已翻译为中文):
#!/bin/bash -eo pipefail set -x sudo curl https://cli-assets.heroku.com/install.sh | sh HEROKU_API_KEY=${HEROKU_API_KEY} heroku container:login HEROKU_API_KEY=${HEROKU_API_KEY} heroku container:push -a menustage web HEROKU_API_KEY=${HEROKU_API_KEY} heroku container:release -a menustage web + sudo curl https://cli-assets.heroku.com/install.sh + sh % 总计 % 已接收 % 已传输 平均速度 时间 时间 时间 当前 下载 上传 总计 花费 剩余 速度 100 1894 100 1894 0 0 55705 0 --:--:-- --:--:-- --:--:-- 55705 此脚本需要超级用户权限。 sudo会提示您输入密码。 正在从https://cli-assets.heroku.com/heroku-linux-x64.tar.xz安装CLI % 总计 % 已接收 % 已传输 平均速度 时间 时间 时间 当前 下载 上传 总计 花费 剩余 速度 100 27.2M 100 27.2M 0 0 8255k 0 0:00:03 0:00:03 --:--:-- 8255k v14.19.0 heroku已安装至/usr/local/bin/heroku › 警告: HEROKU_API_KEY已设置为[已隐藏] › 警告: 我们的服务条款已更改: › https://dashboard.heroku.com/terms-of-service heroku/7.62.0 linux-x64 node-v14.19.0 + HEROKU_API_KEY=************************************ + heroku container:login 警告!您的密码将以未加密形式存储在/home/circleci/.docker/config.json中。 配置凭据助手以消除此警告。请参阅 https://docs.docker.com/engine/reference/commandline/login/#credentials-store 登录成功 + HEROKU_API_KEY=************************************ + heroku container:push -a menustage web ▸ 没有要推送的镜像 退出代码为1 CircleCI收到退出代码1
可能的解决方案
1. 先构建Docker镜像
heroku container:push命令依赖已构建好的Docker镜像。在执行推送命令前,需要先运行docker build命令。例如:
docker build -t registry.heroku.com/menustage/web .
将此命令添加到CircleCI流水线中,放在heroku container:push之前。
2. 确保Dockerfile存在于当前工作目录
Heroku容器推送命令默认在当前目录查找Dockerfile。如果你的Dockerfile在子目录,需要使用-f参数指定路径:
heroku container:push -a menustage web -f ./path/to/Dockerfile
或者在执行推送命令前切换到Dockerfile所在目录:
cd ./path/to/dockerfile-directory
3. 检查CircleCI工作目录
确认CircleCI作业的工作目录是你的代码仓库根目录(或Dockerfile所在目录)。可以在流水线中添加pwd命令查看当前目录:
pwd
如果路径不对,使用cd命令切换到正确目录。
4. 验证Dockerfile配置
确保你的Dockerfile正确适配Spring Boot应用,示例配置如下:
FROM openjdk:17-jdk-slim COPY target/your-app-name.jar app.jar EXPOSE 8080 CMD ["java", "-jar", "/app.jar"]
替换your-app-name.jar为实际的Spring Boot构建产物名称。
内容的提问来源于stack exchange,提问作者Saranya
相关产品推荐
相关产品推荐

