将Docker容器从外部registry部署到Heroku

我有gitlab托pipe的项目库。 我正在使用gitlab-ci从我的项目中构builddocker容器。 我想实现的是将这个容器部署到heroku。

我试图按照这个问题的解决scheme: 如何使用Jhipster,Docker,Gitlab和Heroku构build,testing和部署

下面是我的.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 

我想实现的是,有三个阶段:

  • build立:此时只编译npm项目(将来我想在这里添加一些jar
  • 包:创build并推送到registry泊坞镜像。
  • 部署:在heroku上安装docker镜像。

我遇到了最后阶段( deploy )的问题。 说实话我不是很确定,这里应该做些什么。

我试图使用dpl,关于这个教程: https : //docs.gitlab.com/ce/ci/examples/test-and-deploy-ruby-application-to-heroku.html

Unfornatelly我试图运行docker图像时遇到问题

 $ docker run registry.gitlab.com/maciejsobala/myApp:latest /bin/bash: line 49: docker: command not found 

我完全是盲目的 我真的很感激任何解决scheme,链接到文章/教程等

由于某种原因(使用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 

正在工作,这意味着您的跑步者能够在docker工人中运行docker工人并成功地推送图像。 根据官方的heroku文档 ,对于heroku部署,您只能将该映像推送到heroku dockerregistry。 总之你做了一个

 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身份validation令牌,你可以通过heroku auth:token

如文档中所述,推送到herokusregistry会触发应用程序的发布过程。