Run:
docker-compose upSee logs:
docker logs <name>Enter container terminal:
docker exec -it <name> /bin/bashOpen 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/