Minimal Node.js development environment using docker-compose

Quick and painless setup of a basic local development environment for Node.js using docker-compose.

This is a quick tutorial on how to get a Node.js Docker container up and running for local development.

This approach does NOT require a Dockerfile and solves infamous insidious server response issues.  No more “localhost didn’t send any data” or “ERR_EMPTY_RESPONSE” or “ didn’t send any data”.

You will need Docker Community Edition installed and running (aka Docker desktop) and exactly two files to fire up a Node.js app – “docker-compose.yml” and “app.js”.

localhost didn’t send any data. ERR_EMPTY_RESPONSE


version: "3"
        image: node:alpine
          - .:/app
        working_dir: /app
          - 80:80
        command: node app.js


const http = require('http');
const hostname = '';
const port = 80;

const server = http.createServer((req, res) => {
    res.statusCode = 200;
    res.setHeader('Content-Type', 'text/plain');
    res.end('Live long and prosper!\n');

server.listen(port, hostname, () => {
    console.log(`Server running at http://${hostname}:${port}/`);

Then navigate to the newly-created folder using the console and type: “docker-compose up -d”

That’s all.
Now you can open your browser and access your app at “http://localhost