簡體   English   中英

使用 travis 將多容器 docker 應用程序部署到 heroku 時遇到問題

[英]Trouble deploying multi-container docker application to heroku using travis

所以我真的有幾個問題。 這是我的 travis.yml 文件,這是最新運行的https://travis-ci.com/github/harryyy27/allies-art-club

sudo: required
language: generic

services:
  - docker

stages:
  - dev
  - prod

jobs:
  include:
    - stage: dev
      if: NOT(branch=master)
      scripts:
        - docker build -t harryyy27/allies_art_club/frontend -f ./client/Dockerfile.dev ./client
        - docker build -t harryyy27/allies_art_club/backend -f ./src/Dockerfile.dev ./src
        - docker run -e CI=true harryyy27/allies_art_club/frontend npm test
        - docker run -e CI=true harryyy27/allies_art_club/backend npm test
    - stage: prod
      if: branch=master
      before_deploy:
        - docker build -t harryyy27/aac-client ./client
        - docker tag harryyy27/aac-client registry.heroku.com/$HEROKU_APP/client
        - docker build -t harryyy27/aac-src ./src
        - docker tag harryyy27/aac-src registry.heroku.com/$HEROKU_APP/src
        - docker build -t harryyy27/aac-nginx ./nginx
        - docker tag harryyy27/aac-nginx registry.heroku.com/$HEROKU_APP/nginx
      # Log in to docker CLI
        - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_ID" --password-stdin
        - curl https://cli-assets.heroku.com/install.sh | sh
        - echo "$HEROKU_API" | docker login -u "$HEROKU_USERNAME" --password-stdin registry.heroku.com
      deploy:
        skip_cleanup: true
        provider: script
        script:
          docker ps -a;
          docker push harryyy27/aac-client;
          docker push registry.heroku.com/$HEROKU_APP/client;
          docker push harryyy27/aac-src;
          docker push registry.heroku.com/$HEROKU_APP/src;
          docker push harryyy27/aac-nginx;
          docker push registry.heroku.com/$HEROKU_APP/nginx;
          heroku container:release client src nginx --app $HEROKU_APP;



由於某種原因,我無法部署到 heroku。 docker 推送注冊表。heroku.com/$HEROKU_APP/container_name 似乎與 echo "$HEROKU_API" | docker login -u "$HEROKU_USERNAME" --password-stdin registry.heroku.com sign in but then when I go to release the heroku containers says "Invalid credentials provided" in the terminal and tells me to login. 有沒有辦法在 Travis 上使用 docker CLI 釋放這些容器?

如果沒有,Heroku CLI 會有幫助嗎?

所以我最終通過簡單地將 $HEROKU_API 更改為 $HEROKU_API_KEY 解決了這個問題。 這是一個環境變量,當它存在時會自動將您登錄到 Heroku CLI,使您能夠運行將 docker 容器上傳到 Heroku 所需的腳本。 這是我最終得到的 travis.yml

sudo: required
language: generic

services:
  - docker

stages:
  - dev
  - prod

jobs:
  include:
    - stage: dev
      if: NOT(branch=master)
      scripts:
        - docker build -t harryyy27/allies_art_club/frontend -f ./client/Dockerfile.dev ./client
        - docker build -t harryyy27/allies_art_club/backend -f ./src/Dockerfile.dev ./src
        - docker run -e CI=true harryyy27/allies_art_club/frontend npm test
        - docker run -e CI=true harryyy27/allies_art_club/backend npm test
    - stage: prod
      if: branch=master
      before_deploy:
        - docker build -t harryyy27/aac-client ./client
        - docker tag harryyy27/aac-client registry.heroku.com/$HEROKU_APP/client
        - docker build -t harryyy27/aac-src ./src
        - docker tag harryyy27/aac-src registry.heroku.com/$HEROKU_APP/src
        - docker build -t harryyy27/aac-nginx ./nginx
        - docker tag harryyy27/aac-nginx registry.heroku.com/$HEROKU_APP/nginx
      # Log in to docker CLI
        - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_ID" --password-stdin
        - curl https://cli-assets.heroku.com/install.sh | sh
        - echo "$HEROKU_API_KEY" | docker login -u "$HEROKU_USERNAME" --password-stdin registry.heroku.com
        - docker push harryyy27/aac-client;
        - docker push registry.heroku.com/$HEROKU_APP/client;
        - docker push harryyy27/aac-src;
        - docker push registry.heroku.com/$HEROKU_APP/src;
        - docker push harryyy27/aac-nginx;
        - docker push registry.heroku.com/$HEROKU_APP/nginx;
      deploy:
        skip_cleanup: true
        provider: script
        script:
          heroku container:login;
          heroku container:release client src nginx --app $HEROKU_APP;

我現在確實在 Heroku 中有錯誤:P

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM