Enter docker-compose up command to pull node packages and run the app.
    Code's hot-reload is provided by nodemon.
docker-compose.yml
version: '3'
services:
  app:
    image: node:14
    command: bash -c "yarn && yarn start"
    restart: unless-stopped
    volumes:
    - '.:/usr/src/app'
    working_dir: /usr/src/app
    ports:
      - '3300:3300'
    links:
      - mongo
  mongo:
    restart: unless-stopped
    image: mongo
    ports:
      - '27017:27017'
package.json
{
  "scripts": {
    "start": "nodemon index.js"
  },
  "dependencies": {
    "express": "^4.17.1",
    "nodemon": "^2.0.4"
  }
}
index.js
const express = require('express');
const app = express();
const port = 3300;
app.get('/', (req, res) => {
    res.send('Hello World!')
});
app.listen(port, () => {
    console.log(`Example app listening at http://localhost:${port}`)
});
