我在gitlab上托管了项目存储库。我正在使用gitlab从我的项目构建码头容器。我想要实现的是将这个容器部署到heroku。
我试图从这个问题中找到解决方案:如何使用Jhipster、Docker、Gitlab和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我想要达到的目标有三个阶段:
jar )我遇到了最后阶段(deploy)的问题。老实说,我不太确定这里该做些什么。
对于本教程:https://docs.gitlab.com/ce/ci/examples/test-and-deploy-ruby-application-to-heroku.html,我尝试使用dpl。
我在试图运行码头形象时遇到了一些问题
$ docker run registry.gitlab.com/maciejsobala/myApp:latest
/bin/bash: line 49: docker: command not found我在这里完全瞎了。我会非常感谢任何解决方案,链接到文章/教程等。
发布于 2017-03-05 22:42:10
您启动应用程序的原因(使用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是有效的,这意味着你的跑步者能够在码头上运行对接并成功地推进图像。根据heroku的官方文件的说法,对于heroku部署,您只能将该映像推送到heroku坞注册中心。简而言之,你做的是
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注册表会触发应用程序的发布过程。
发布于 2018-11-02 23:14:49
其原因
“没有这样的图像:Regiy.gitlab.com/username/ image: tag”
错误是标记源应该被提前提取。脚本块应该包括一个docker pull语句。整个脚本块应该如下:
script:
- docker login --email=_ --username=_ --password=<YOUR-HEROKU-AUTH-TOKEN> registry.heroku.com
- docker pull registry.gitlab.com/maciejsobala/myApp:latest
- docker tag registry.gitlab.com/maciejsobala/myApp:latest registry.heroku.com/maciejsobala/myApp:latest
- docker push registry.heroku.com/maciejsobala/myApp:latest不过,这还不够。Heroku改变了它的发布策略,这样推到Heroku容器注册中心就不会再触发发布了。下面是完成缺少的发布任务的额外命令:
- docker run --rm -e HEROKU_API_KEY=<YOUR-HEROKU-AUTH-TOKEN> wingrunr21/alpine-heroku-cli container:release web --app myApphttps://stackoverflow.com/questions/42611622
复制相似问题