Select Page

There seemed to be a lot of example Docker containers for NodeJS/Express apps, but most of these seemed to be setup to run on macOS. I ran into a few issues when trying to get it all setup using a Windows host so thought I’d make some notes on it for future reference.

First off create an app.js file

'use strict';

const express = require('express');

const PORT = 3000;

const app = express();
app.get('/', function (req, res) {
res.send('Edit me!\n');


Then a package.json

"name": "docker-nodejs",
"version": "1.0.0",
"description": "A minimal NodeJS project config for Docker that restarts automatically on code changes",
"author": "Author",
"main": "app.js",
"scripts": {
"start": "nodemon -L app.js"
"dependencies": {
"express": "^4.13.3"

Add a docker-compose.yml that sets up the port forwarding and volume mount points

version: "2"
build: .
command: npm start
- "3000:3000"
- .:/opt/app


and a Dockerfile which pulls in the node image, and install nodemon globally. Note that the npm install required –no-bin-links on Windows, otherwise the npm install will fail

FROM node:boron

RUN mkdir -p /opt/app
WORKDIR /opt/app

COPY . /opt/app

RUN npm install -g nodemon
RUN npm install --no-bin-links

CMD [ "npm", "start" ]


Finally add a .dockerignore which contains:


Then to kick it all off:

docker-compose up --build

The complete project can be cloned from my Github:

%d bloggers like this: