将docker容器从外部注册表部署到Heroku

我在gitlab上托管了项目存储库.我正在使用gitlab-ci从我的项目构建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个阶段:

> build:此时,只编译npm项目(将来,我
想在这里添加一些jar)
> package:创建并推送到注册表docker镜像.
> deploy:在heroku上安装docker镜像.

我遇到了最后阶段(部署)的问题.说实话,我不太确定,应该在这做什么.

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

Unfornatelly我在尝试运行docker image时遇到了问题

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

我在这里完全失明了.我真的很感激任何解决方案,链接到文章/教程等.

您出于某种原因启动应用程序(使用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中运行码头并成功推送图像.对于heroku部署,您必须根据the official heroku documentation将该图像推送到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 auth令牌,你可以通过heroku auth:token获得

如文档中所述,推送到herokus注册表会触发应用程序的发布过程.

相关文章
相关标签/搜索
每日一句
    每一个你不满意的现在,都有一个你没有努力的曾经。