├── .gitignore ├── Dockerfile ├── package.json ├── server.js └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | # Official Node image for fat version 2 | # FROM node:argon 3 | # Awesome tiny node image 4 | FROM iron/node 5 | 6 | WORKDIR /app 7 | ADD . /app 8 | 9 | ENTRYPOINT [ "node", "server.js" ] 10 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "docker_web_app", 3 | "version": "1.0.0", 4 | "description": "Node.js on Docker", 5 | "author": "First Last ", 6 | "main": "server.js", 7 | "dependencies": { 8 | "express": "^4.13.3" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /server.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const express = require('express'); 4 | 5 | // Constants 6 | const PORT = 8080; 7 | 8 | // App 9 | const app = express(); 10 | app.get('/', function (req, res) { 11 | res.send('Hello world!\n'); 12 | }); 13 | 14 | app.listen(PORT); 15 | console.log('Running on http://localhost:' + PORT); 16 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | This is an example for how to build a teeny, tiny Docker image for your 2 | Node programs. 3 | 4 | This example is an web server that prints Hello World and ends up in small Docker image: 5 | 6 | [![](https://badge-imagelayers.iron.io/treeder/tiny-node:latest.svg)](https://imagelayers.iron.io/?images=treeder/static-go:latest 'Get your own badge on imagelayers.io') 7 | 8 | ## 1. Get dependencies 9 | 10 | We only have one dependency, so let's get it and vendor it: 11 | 12 | ```sh 13 | docker run --rm -v "$PWD":/app -w /app iron/node:dev npm install 14 | ``` 15 | 16 | ## 2. Test it locally 17 | 18 | ```sh 19 | docker run --rm -it -p 8080:8080 -v "$PWD":/app -w /app iron/node node server.js 20 | ``` 21 | 22 | Check localhost:8080 to ensure it's running. 23 | 24 | ## 3. Build image 25 | 26 | ```sh 27 | docker build -t treeder/tiny-node:latest . 28 | ``` 29 | 30 | ## 4. Test the image 31 | 32 | Now that we built the image, let's run it. 33 | 34 | ```sh 35 | docker run --rm -it -p 8080:8080 treeder/tiny-node 36 | ``` 37 | 38 | Surf to: http://localhost:8080/ 39 | 40 | Boom. 41 | 42 | ## Fat version 43 | 44 | To build the fat version, change all the iron/node bits to node:argon. 45 | --------------------------------------------------------------------------------