How to deploy NodeJS application to Heroku using docker
Create a project in your local
>> npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.
See `npm help json` for definitive documentation on these fields
and exactly what they do.
Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.
Press ^C at any time to quit.
package name: (heroku-nodejs-docker) 
version: (1.0.0) 
description: 
entry point: (server.js) 
test command: 
git repository: (https://github.com/xx/Heroku-NodeJs-docker.git) 
keywords: 
author: 
license: (ISC) 
About to write to /Users/xx/Documents/GitHub/Heroku-NodeJs-docker/package.json:
{
  "name": "heroku-nodejs-docker",
  "version": "1.0.0",
  "description": "",
  "main": "server.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node server.js"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/xx/Heroku-NodeJs-docker.git"
  },
  "author": "",
  "license": "ISC",
  "bugs": {
    "url": "https://github.com/xx/Heroku-NodeJs-docker/issues"
  },
  "homepage": "https://github.com/xx/Heroku-NodeJs-docker#readme"
}
Is this OK? (yes) 
Create simple NodeJS application
server.js
const express = require('express');
const app = express();
app.get('/', (req, res) => res.send("<h1>Hello world</h1>"));
app.listen(process.env.PORT || 8080);Write your docker file
Build the image on top of light weight linux (alpine) and install express.
Dockerfile
FROM node:15.8.0-alpine3.10
WORKDIR /app
ADD server.js package.json ./
RUN npm install express
RUN npm install
CMD node server.jsLogin to heroku cli
>> heroku loginLogin to heroku container
>> heroku container:loginCreate target application
>> heroku create <YOUR_APP_NAME>Connect you local git to remote heroku git
>> heroku git:remote -a <YOUR_APP_NAME>Build the image and push to Container Registry
>> heroku container:push webThen release the image to your app
>> heroku container:release webVerify the nodeJS application in your browser
>> heroku openLogout the container when you're done
>> Logout heroku containerLast updated
Was this helpful?