简体   繁体   中英

heroku deploy docker image with github

I have a nodejs express app serving a site. I deployed it with Heroku, using buildpack/nodejs and Github. Every time i push on Github, Heroku detects the push and runs the npm start script.

The problem is that I need to pass to a Docker image containing the nodejs app. I did it and it works locally, I can run it with docker run -d -p 8000:8000 exporter and it works.

I added the docker.yml file on the root folder and pushed on Github. But heroku still runs the npm script in the package.json, ignoring the docker.yml.

Is there a way to make heroku create the container from the Dockerfile every time I push to Github?

For Heroku to understand your heroku.yml file you need a few things. First off you need to make sure that the Dockerfile is in the root directory. Second, you need to ensure you are building and running the docker environment. Finally, make sure you set your heroku stack to docker .

So, given that we want to ensure the directory tree looks like this:

|-my_app
     |-app_contents
|-Dockerfile
|-heroku.yml
|-etc...

And that the heroku.yml file looks something like this:

build:
   docker:
      web: Dockerfile
run:
   web: docker run -d -p 8000:8000 exporte

and finally run this in your heroku repo:

heroku stack:set container

Then just make sure you push your changes up.

If this doesn't help. I would recommend updating your post with the following:

  1. The file tree
  2. The Dockerfile
  3. The heroku.yml file

Thanks to the answer of Taylor Cochran I managed to solve the problem.

I first tried to follow this link: https://devcenter.heroku.com/articles/container-registry-and-runtime

It worked but I had to do it from the cli.

After that I removed the entire project and remade it. I followed the indications of Taylor Cochran and pushed from heroku cli. I saw it worked and I then added the github deploy. And now every time I push on Github the new Docker container is automatically built and deployed by Heroku.

NB: I changed web: docker run -d -p 8000:8000 exporter to npm start

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM