├── .gitignore ├── .dockerignore ├── Dockerfile ├── README.md ├── src └── index.js ├── docker-compose.yml └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:12 2 | 3 | WORKDIR /app 4 | 5 | COPY package*.json ./ 6 | 7 | RUN npm install 8 | 9 | COPY . . 10 | 11 | ENV PORT=8080 12 | 13 | EXPOSE 8080 14 | 15 | CMD [ "npm", "start" ] 16 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Docker + Node.js 2 | 3 | Dockerize a Node.js app. 4 | 5 | Watch the full [Docker video](https://youtu.be/gAkwW2tuIqE) on YouTube or read the [Docker Tutorial](https://fireship.io/lessons/docker-basics-tutorial-nodejs/) on Fireship.io. 6 | 7 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | const app = require('express')(); 2 | 3 | app.get('/', (req, res ) => 4 | res.json({ message: 'Docker is easy 🐳' }) 5 | ); 6 | 7 | const port = process.env.PORT || 8080; 8 | 9 | app.listen(port, () => console.log(`app listening on http://localhost:${port}`) ); -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | web: 4 | build: . 5 | ports: 6 | - "8080:8080" 7 | db: 8 | image: "mysql" 9 | environment: 10 | MYSQL_ROOT_PASSWORD: password 11 | volumes: 12 | - db-data:/foo 13 | 14 | volumes: 15 | db-data: 16 | 17 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "docker-demo", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "node src/index.js" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "express": "^4.17.1" 14 | } 15 | } 16 | --------------------------------------------------------------------------------