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 “127.0.0.1 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”.
docker-compose.yml
version: "3" services: app: image: node:alpine volumes: - .:/app working_dir: /app ports: - 80:80 command: node app.js
app.js
const http = require('http'); const hostname = '0.0.0.0'; 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“