从外部注册表部署Docker容器到Heroku
我得到了托管在gitlab上的项目存储库。我正在使用gitlab-ci从我的项目中构建docker容器。我想实现的是将该容器部署到heroku。从外部注册表部署Docker容器到Heroku
我试图跟踪该问题的解决方案:How to build, test and deploy using Jhipster, Docker, Gitlab and Heroku
这里是我的.gitlab-ci.yaml
看起来像:
stages:
- build
- package
- deploy
build_npm:
image: node:latest
stage: build
script:
- npm install
- npm run build:prod
artifacts:
paths:
- dist/
build_image:
image: docker:latest
services:
- docker:dind
stage: package
script:
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.gitlab.com
- docker build -t registry.gitlab.com/maciejsobala/myApp .
- docker push registry.gitlab.com/maciejsobala/myApp:latest
deploy_to_heroku:
stage: deploy
services:
- docker:dind
script:
- gem install dpl
- docker run registry.gitlab.com/maciejsobala/myApp:latest
- dpl --provider=heroku --app= myApp --api-key=$HEROKU_API_KEY
我所试图实现的是,有3个阶段:
- 构建:此时,只编译npm项目(今后我想在这里添加一些
jar
) - 包:创建并推送到注册表泊坞镜像。
- 部署:在heroku上安装docker镜像。
我遇到了最后阶段的问题(deploy
)。说实话,我不太确定,这里应该做些什么。
我试图DPL使用,关于本教程:试图运行搬运工图像
$ docker run registry.gitlab.com/maciejsobala/myApp:latest
/bin/bash: line 49: docker: command not found
我完全看不清这里的时候https://docs.gitlab.com/ce/ci/examples/test-and-deploy-ruby-application-to-heroku.html
Unfornatelly我遇到的问题。我真的很感激任何解决方案,指向文章/教程的链接等。
由于某种原因(使用docker run
),您可能不需要该应用。 dpl
工具旨在用于代码库内部,而不是用于映像部署。至于你说的
build_image:
image: docker:latest
services:
- docker:dind
stage: package
script:
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.gitlab.com
- docker build -t registry.gitlab.com/maciejsobala/myApp .
- docker push registry.gitlab.com/maciejsobala/myApp:latest
是工作,什么手段你的亚军是能够运行在码头工人码头工人,并成功推动图像。根据the official heroku documentation,对于heroku部署,您只能将该映像推送到heroku docker注册表。总之你做了
deploy_to_heroku:
stage: deploy
services:
- docker:dind
script:
- docker login --email=_ --username=_ --password=<YOUR-HEROKU-AUTH-TOKEN> registry.heroku.com
- docker tag registry.gitlab.com/maciejsobala/myApp:latest registry.heroku.com/maciejsobala/myApp:latest
- docker push registry.heroku.com/maciejsobala/myApp:latest
与Heroku的身份验证令牌,你可以得到由heroku auth:token
如文档中说,推到herokus注册表触发应用的释放过程。
嗨我试过这个,但我不断收到以下错误: 来自守护进程的错误响应:没有这样的图像:registry.gitlab.com/username/image:tag 有关如何解决此问题的任何想法? –
您应该将您的配置指向您的实际容器注册表。目前您使用默认值,明显指向不存在的图像 –
为您完成“build_image”工作,并在您的Gitlab注册表中创建一个全新的图像? –
@DavidSteiman:是的。 –