Demonstrates how to build a testable, deployable, scalable microservice with NodeJS and Docker.
Branch: master
Clone or download
dwmkerr Merge pull request #14 from pcanterini/node-version
Update node version to latest LTS
Latest commit cb5a77f Nov 5, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
integration-test Added the basic integration test Apr 19, 2016
users-service Merge pull request #14 from pcanterini/node-version Nov 5, 2018
docker-compose.yml Incorporate kitgary's fix to docker-compose linking Sep 6, 2016


Learn Docker by building a Microservice!

This is a companion project to my article on 'Learn Docker by building a Microservice' demonstrating key concepts of Docker using a Node.js microservice as an example.


You must have Docker installed for this code to work! Check the Installation Guide if you haven't got it installed.


To start or stop the test database, build the test-database image and run it:

cd ./test-database
docker build -t test-database .
docker run -it -p 3306:3306 test-database

Some commands for working with the test server:

cd ./users-service
npm install         # setup everything
npm test 			# unit test - no need for a test database running
npm start           # run the server - you must have a test database running
npm run debug       # run the server in debug mode, opens a browser with the inspector
npm run lint        # check to see if the code is beautiful

You can also run the test server in its own container:

docker build -t users-service .
docker run -it -p 8123:8123 --link db:db -e DATABASE_HOST=DB users-service

Integration Testing

To test the entire stack, run:

docker-compose build
docker-compose up -d
sleep 10 # give the database server enough time to start!
cd integration-test && npm install && npm start && cd ..
docker-compose down