Run:
docker-compose up
See logs:
docker logs <name>
Enter container terminal:
docker exec -it <name> /bin/bash
Open app:
open "http://$(docker-machine ip):8000/"
# curl -i "$(docker-machine ip):8000/"
Stop:
docker-compose down
node_modules/ | |
*.log |
web: | |
build: . | |
volumes: | |
- .:/usr/src/app/ | |
ports: | |
- "8000:3000" | |
links: | |
- redis | |
redis: | |
image: redis |
# install latest node | |
# https://hub.docker.com/_/node/ | |
FROM node:latest | |
# create and set app directory | |
RUN mkdir -p /usr/src/app/ | |
WORKDIR /usr/src/app/ | |
# install app dependencies | |
# this is done before the following COPY command to take advantage of layer caching | |
COPY package.json . # remember the working directory is `/usr/src/app/` | |
RUN npm install | |
# copy app source to destination container | |
COPY . . | |
# expose container port | |
EXPOSE 3000 | |
CMD npm start |
{ | |
"name": "docker-node-example", | |
"version": "0.0.0", | |
"description": "An example of a Dockerized Node.js web app.", | |
"author": "Mark <[email protected]>", | |
"main": "server.js", | |
"scripts": { | |
"start": "node server.js" | |
}, | |
"keywords": [ | |
"docker node" | |
], | |
"dependencies": { | |
"express": "^4.13.4", | |
"redis": "^2.6.2" | |
}, | |
"devDependencies": {}, | |
"license": "MIT" | |
} |
'use strict'; | |
const express = require('express'); | |
const app = express(); | |
const redis = require('redis'); | |
const client = redis.createClient({ | |
host: 'redis', | |
port: 6379 | |
}); | |
app.get('/', (req, res) => { | |
client.incr('hits'); | |
client.get('hits', (err, hit) => { | |
if (err) throw err; | |
res.send(`Hits: ${hit}`); | |
}); | |
}); | |
const port = 3000; | |
app.listen(port, () => { | |
console.log(`Running on http://localhost:${port}`); | |
}); |
https://nodejs.org/en/docs/guides/nodejs-docker-webapp/