2017-03-05 5 views
4

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つの段階があり、あります

  • ビルド:この時点では、npmプロジェクトのみをコンパイルします(将来、 にはjarを追加します)
  • パッケージ:作成してレジストリドッカーのイメージにプッシュします。
  • deploy:herokuにドッカー画像をインストールします。

私は最後の段階(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私が問題に実行しています。

+0

"build_image"はあなたのために働き、Gitlabレジストリに新鮮なイメージをもたらしますか? –

+0

@DavidSteiman:はい。 –

答えて

5

何らかの理由で(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 auth:token

ようで取得することができ、あなたの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 

を行うherokusレジストリにプッシュすると、アプリのリリースプロセスをトリガし、文書で述べています。

+0

こんにちは私はこれを試みたが、私は次のエラーが表示され続けます: デーモンからのエラー応答:いいえそのようなイメージ:registry.gitlab.com/username/image:tag これを修正する方法に関するアイデア? –

+0

設定を実際のコンテナレジストリに指示する必要があります。現時点ではデフォルト値を使用していますが、明らかに存在しないイメージ –