docker - Heroku:如何在 gitlab CI/CD 中发布现有图像?
问题描述
我想将我的应用程序部署为来自 Gitlab CI/CD 管道的容器。
几天前,我可以按照 heroku devCenter 中的说明部署我的 docker 镜像。
docker login --username=_ --password=$(heroku auth:token) registry.heroku.com
并将其推送到 heroku 注册表。
码头工人标签 imageregistry.heroku.com/app/process-type
docker push registry.heroku.com/app/process-type
但随后他们分两步更改了部署
heroku 硬币容器:推
heroku 容器:释放
在更新之前,它是在容器被推送到容器注册表时部署的。现在我需要以任何方式释放它。
我尝试将映像重命名为 release 并尝试安装 heroku CLI,但后来我无法登录 heroku 注册表。
你是怎么解决的?
解决方案
这是我昨天发现的一个可行的解决方案,它触发了发布。您可以使用 docker 保留您的部署,并将这个小脚本添加到您的管道中。
#!/bin/bash
imageId=$(docker inspect registry.heroku.com/$YOUR_HEROKU_APP/web --format={{.Id}})
payload='{"updates":[{"type":"web","docker_image":"'"$imageId"'"}]}'
curl -n -X PATCH https://api.heroku.com/apps/${YOUR_HEROKU_APP}/formation \
-d "$payload" \
-H "Content-Type: application/json" \
-H "Accept: application/vnd.heroku+json; version=3.docker-releases" \
-H "Authorization: Bearer $YOUR_HEROKU_API_KEY"
该解决方案来自 Kai tödter,您可以在https://toedter.com/2018/06/02/heroku-docker-deployment-update/找到它
推荐阅读
- python - Python - TypeError:“int64”类型的对象不是 JSON 可序列化的
- c# - 从 C# 调用带有 void* 的 dll
- xamarin.forms - 从 UWP URI 协议方案启动未导航
- swift - 像在 SCNARView 中一样计算 worldFront
- android - 如何在android上的mysql中进行更改
- r - 在 R 中更快地读取和转换 .pdf 文件并将其转换为 .txt 文件?
- javascript - Jquery选择多个div
- javascript - Javascript 语法错误,单选按钮上无法识别的表达式
- spring-boot - 当 bootstrap.properties 存在时 application.properties 在 spring config 客户端中被忽略
- vba - 如果用户跳过行输入数值,则强制用户在以下可用行中输入数据