【问题标题】:Trouble deploying multi-container docker application to heroku using travis使用 travis 将多容器 docker 应用程序部署到 heroku 时遇到问题
【发布时间】:2021-07-21 15:53:36
【问题描述】:

所以我真的有几个问题。这是我的 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 push registry.heroku.com/$HEROKU_APP/container_name 似乎与 echo "$HEROKU_API" | 一起工作docker login -u "$HEROKU_USERNAME" --password-stdin registry.heroku.com 登录,但是当我去释放 heroku 容器时,在终端中显示“提供的凭据无效”并告诉我登录。有没有办法使用 Travis 上的 docker CLI 释放这些容器?

如果没有,Heroku CLI 会有帮助吗?

【问题讨论】:

    标签: docker heroku travis-ci


    【解决方案1】:

    所以我最终通过简单地将 $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

    【讨论】:

      猜你喜欢
      • 2016-08-27
      • 1970-01-01
      • 2017-05-03
      • 2021-04-21
      • 2020-11-09
      • 2011-08-30
      • 1970-01-01
      • 2021-11-08
      • 2017-01-18
      相关资源
      最近更新 更多