Code Monkey home page Code Monkey logo

heroku-buildpack-multi-heroku-yml's Introduction

Heroku Multi Procfile buildpack

tl;dr -- The idea here is that you have a single git repository, but multiple Heroku apps. In other words, you want to share a single git repository to power multiple Heroku apps. So, for each app you need this buildpack, and for each app, you need to set a config variable named PROCFILE to the location where the procfile is for that app. As an example:

$ heroku create -a example-1
$ heroku create -a example-2
$ heroku buildpacks:add -a example-1 https://github.com/evandroforks/heroku-buildpack-multi-heroku-yml
$ heroku buildpacks:add -a example-2 https://github.com/evandroforks/heroku-buildpack-multi-heroku-yml
$ heroku config:set -a example-1 HEROKUYML=heroku.yml
$ heroku config:set -a example-2 HEROKUYML=backend/heroku.yml
$ git push https://git.heroku.com/example-1.git HEAD:master
$ git push https://git.heroku.com/example-2.git HEAD:master

When example-1 builds, it'll copy Procfile into /app/Procfile, and when example-2 builds, it'll copy backend/Procfile to /app/Procfile. For example-2, the process types available for you to scale up will be the ones referenced (originally) in backend/Procfile.

Pipelines

Only builds will set the proper Procfile. If you use Heroku Pipelines, then promoting a slug downstream will not trigger a build, and therefore will not look at the environment variable and act accordingly. Make sure that the proper Procfile is referenced all the way upstream to the first stage that builds.

Authors

Andrew Gwozdziewycz [email protected] and Cyril David [email protected]

heroku-buildpack-multi-heroku-yml's People

Contributors

apg avatar apghero avatar bmedenwald avatar cyx avatar evandrocoan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

jakequist frabbit

heroku-buildpack-multi-heroku-yml's Issues

Problem deploying monorepo sub-package to Heroku

I have a monorepo that contains mostly node packages and a single Python package, which we've containerized using Docker. The directory structure looks something like this:

~/ourmonorepo/
    packages/
        package1/... # its own package using node.js
        package2/... # another package, using node.js
        dockerpackage/ # the package I'm trying to deploy (Python, so needing Docker to containerize)
            heroku.yml # a simple yml file containing build: docker: web: Dockerfile
            Dockerfile # a working dockerfile
            serve.py # a tiny flask app

I've added this buildpack:

$ heroku buildpacks:add -a my-heroku-app https://github.com/evandroforks/heroku-buildpack-multi-heroku-yml

I've set the HEROKUYML environment variable appropriately:

heroku config:set -a my-heroku-app HEROKUYML=packages/dockerpackage/heroku.yml

But I'm receiving this error when trying to deploy:

=== Fetching app code...
=!= Your app does not include a heroku.yml build manifest. To deploy your app, either create a heroku.yml: https://devcenter.heroku.com/articles/build-docker-images-heroku-yml
Or change your stack by running: 'heroku stack:set heroku-20'

The only way I've gotten it to work is by copying heroku.yml and Dockerfile into the root of the project. Is it necessary to have some kind of blank/dummy heroku.yml there to get this step to pass? Any help would be appreciated.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.