不使用heroku docker插件将docker部署到heroku

时间:2015-11-18 04:11:03

标签: heroku deployment docker continuous-integration gitlab

假设我正在开发一个在我自己的ci服务器上运行gitlab-ci shell runner的web项目,以构建docker并将其部署到heroku,我已经浏览了gitlab和heroku的一些文档,如{{3 }和gitlab-ci: using docker build。我可以在不使用heroku-docker插件的情况下部署docker项目,这对我来说似乎不那么灵活吗?但是我尝试了,以下方法构建成功部署到heroku,但应用程序崩溃。 Heroku日志说package.json中缺少start脚本,但由于我正在部署docker项目,我无法在那里"start": "docker-compose up",我可以吗?

    #.gitlab-ci.yml
    stages:
      - deploy
    before_script:
      - npm install
      - bower install
    dev:
      stage: deploy
      script:
        - docker-compose run nginx run-test
        - gem install dpl
        - dpl --provider=heroku --app=xixi-web-dev --api-key=$HEROKU_API_KEY
      only:
        - dev
    # docker-compose.yml
    app:
      build: .
      volumes:
        - .:/code:ro
      expose:
        - "3000"
      working_dir: /code
      command: pm2 start app.dev.json5

    nginx:
      build: ./setup/nginx
      restart: always
      volumes:
        - ./setup/nginx/sites-enabled:/etc/nginx/sites-enabled:ro
        - ./dist:/var/app:ro
      ports:
        - "$PORT:80"
      links:
        - app

我不想使用heroku docker插件,因为它似乎不太灵活,我无法创建app.json,因为我不想为我的应用程序使用现有的docker镜像。相反,我定义了Dockerfile的自定义appnginx中使用的docker-compose.yml

现在看来heroku不会将我的项目检测为docker项目,除非我使用heroku docker插件部署它,但正如我上面提到的,我不能这样做。然后我在heroku或gitlab上缺少任何文档可以帮助我吗?或者你有什么想法可能有帮助吗?非常感谢!

1 个答案:

答案 0 :(得分:1)

好的,似乎需要heroku docker:release。我最终在我的CI服务器上安装了heroku cli和heroku docker插件,并使用heroku docker:release --app app来发布我的应用