├── README.md ├── public ├── images │ ├── march.jpeg │ ├── nissan.jpeg │ ├── smart.jpeg │ ├── tesla.jpeg │ ├── toyota.jpeg │ ├── aluracars.png │ ├── mercedes.jpeg │ ├── peageot.jpeg │ └── renault.jpeg └── css │ └── estilos.css ├── config ├── config.development.json └── database.js ├── docker ├── alura-cars.dockerfile ├── nginx.dockerfile └── config │ └── nginx.conf ├── package.json ├── models └── Car.js ├── .gitignore ├── server.js ├── docker-compose.yml ├── views └── index.ejs └── routes └── index.js /README.md: -------------------------------------------------------------------------------- 1 | # alura-docker 2 | Projecto del curso de Docker - alura-cars 3 | 4 | 5 | -------------------------------------------------------------------------------- /public/images/march.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alura-es-cursos/1852-docker-compose/master/public/images/march.jpeg -------------------------------------------------------------------------------- /public/images/nissan.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alura-es-cursos/1852-docker-compose/master/public/images/nissan.jpeg -------------------------------------------------------------------------------- /public/images/smart.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alura-es-cursos/1852-docker-compose/master/public/images/smart.jpeg -------------------------------------------------------------------------------- /public/images/tesla.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alura-es-cursos/1852-docker-compose/master/public/images/tesla.jpeg -------------------------------------------------------------------------------- /public/images/toyota.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alura-es-cursos/1852-docker-compose/master/public/images/toyota.jpeg -------------------------------------------------------------------------------- /public/images/aluracars.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alura-es-cursos/1852-docker-compose/master/public/images/aluracars.png -------------------------------------------------------------------------------- /public/images/mercedes.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alura-es-cursos/1852-docker-compose/master/public/images/mercedes.jpeg -------------------------------------------------------------------------------- /public/images/peageot.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alura-es-cursos/1852-docker-compose/master/public/images/peageot.jpeg -------------------------------------------------------------------------------- /public/images/renault.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alura-es-cursos/1852-docker-compose/master/public/images/renault.jpeg -------------------------------------------------------------------------------- /config/config.development.json: -------------------------------------------------------------------------------- 1 | { 2 | "databaseConfig":{ 3 | "host": "mongodb", 4 | "database": "alura-cars" 5 | } 6 | } -------------------------------------------------------------------------------- /docker/alura-cars.dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:latest 2 | ENV NODE_ENV=development 3 | COPY . /var/www 4 | WORKDIR /var/www 5 | RUN npm install 6 | ENTRYPOINT ["npm", "start"] 7 | EXPOSE 3000 -------------------------------------------------------------------------------- /docker/nginx.dockerfile: -------------------------------------------------------------------------------- 1 | FROM nginx:latest 2 | COPY /public /var/www/public 3 | COPY /docker/config/nginx.conf /etc/nginx/nginx.conf 4 | RUN chmod 755 -R /var/www/public 5 | EXPOSE 80 443 6 | ENTRYPOINT ["nginx"] 7 | CMD ["-g", "daemon off;"] 8 | -------------------------------------------------------------------------------- /public/css/estilos.css: -------------------------------------------------------------------------------- 1 | html { height: 100%; } 2 | body { 3 | min-height:100%; 4 | position:relative; 5 | padding-bottom: 50px 6 | } 7 | footer { 8 | position: absolute; 9 | text-align: center; 10 | color: white; 11 | left: 0 ; right: 0; bottom: 0; 12 | height:50px; 13 | padding-top: 10px; 14 | background-color: black; 15 | } 16 | 17 | .hero-feature { 18 | margin-bottom: 30px; 19 | display: inline-block; 20 | vertical-align: top; 21 | float: none; 22 | } -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "aluracars", 3 | "version": "1.0.0", 4 | "description": "Projecto de Docker para AluraCursos", 5 | "main": "index.js", 6 | "dependencies": { 7 | "ejs": "^3.1.6", 8 | "express": "^4.17.0", 9 | "mongoose": "^6.0.0" 10 | }, 11 | "scripts": { 12 | "test": "echo \"Error: no test specified\" && exit 1", 13 | "start": "node server.js" 14 | }, 15 | "keywords": [ 16 | "docker", 17 | "alura" 18 | ], 19 | "author": "Harland Lohora", 20 | "license": "ISC" 21 | } 22 | -------------------------------------------------------------------------------- /models/Car.js: -------------------------------------------------------------------------------- 1 | var mongoose = require("mongoose"); 2 | // var mongoosePaginate = require('mongoose-paginate'); 3 | 4 | var schema = mongoose.Schema({ 5 | name: { 6 | type: String, 7 | required: true, 8 | }, 9 | price: { 10 | required: true, 11 | type: String, 12 | }, 13 | description: { 14 | required: true, 15 | type: String, 16 | }, 17 | img: { 18 | required: true, 19 | type: String, 20 | }, 21 | }); 22 | 23 | // schema.plugin(mongoosePaginate); 24 | 25 | module.exports = mongoose.model("Car", schema); 26 | -------------------------------------------------------------------------------- /config/database.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose'); 2 | mongoose.Promise = Promise; 3 | 4 | module.exports = (uri) => { 5 | 6 | mongoose.connect(uri); 7 | const conn = mongoose.connection; 8 | 9 | conn.on('connected', () => 10 | console.log('\n Mongoose! Connected! ' + uri)); 11 | 12 | conn.on('disconnected', () => 13 | console.log('\n Mongoose! Disconnected from ' + uri)); 14 | 15 | conn.on('error', err => 16 | console.log('\n Mongoose! Connection error: ' + err)); 17 | 18 | process.on('SIGINT', () => conn.close(() => { 19 | console.log('\n Mongoose! Disconnected by application termination'); 20 | process.exit(0); 21 | })); 22 | }; -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Logs 3 | logs 4 | *.log 5 | npm-debug.log* 6 | yarn-debug.log* 7 | yarn-error.log* 8 | 9 | # Runtime data 10 | pids 11 | *.pid 12 | *.seed 13 | *.pid.lock 14 | 15 | # Directory for instrumented libs generated by jscoverage/JSCover 16 | lib-cov 17 | 18 | # Coverage directory used by tools like istanbul 19 | coverage 20 | 21 | # nyc test coverage 22 | .nyc_output 23 | 24 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 25 | .grunt 26 | 27 | # Bower dependency directory (https://bower.io/) 28 | bower_components 29 | 30 | # node-waf configuration 31 | .lock-wscript 32 | 33 | # Compiled binary addons (http://nodejs.org/api/addons.html) 34 | build/Release 35 | 36 | # Dependency directories 37 | node_modules/ 38 | jspm_packages/ 39 | 40 | # Typescript v1 declaration files 41 | typings/ 42 | 43 | # Optional npm cache directory 44 | .npm 45 | 46 | # Optional eslint cache 47 | .eslintcache 48 | 49 | # Optional REPL history 50 | .node_repl_history 51 | 52 | # Output of 'npm pack' 53 | *.tgz 54 | 55 | # Yarn Integrity file 56 | .yarn-integrity 57 | 58 | # dotenv environment variables file 59 | .env 60 | -------------------------------------------------------------------------------- /server.js: -------------------------------------------------------------------------------- 1 | const express = require("express"); 2 | const MongoClient = require("mongodb").MongoClient; 3 | const path = require("path"); 4 | const app = express(); 5 | const routes = require("./routes"); 6 | let env = process.env.NODE_ENV; 7 | 8 | if (!env) { 9 | env = "development"; 10 | } 11 | // 12 | const config = require(`./config/config.${env}.json`); 13 | 14 | require("./config/database")( 15 | `mongodb://${config.databaseConfig.host}:27017/${config.databaseConfig.database}` 16 | ); 17 | 18 | MongoClient.connect( 19 | `mongodb://${config.databaseConfig.host}:27017/${config.databaseConfig.database}`, 20 | function (err, db) { 21 | if (err) throw err; 22 | console.log("Database created!"); 23 | // db.close(); 24 | } 25 | ); 26 | 27 | // Config PORT default 3000 28 | const port = process.env.port || 3000; 29 | app.set("views", path.join(__dirname, "/views/")); 30 | app.set("view engine", "ejs"); 31 | // Public assets 32 | app.use(express.static("public")); 33 | 34 | // Router Config 35 | app.use(routes); 36 | 37 | // Inicializar el servidor 38 | app.listen(port, () => { 39 | console.log("Server initialiazed on port " + port); 40 | }); 41 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.9" 2 | services: 3 | nginx: 4 | build: 5 | dockerfile: ./docker/nginx.dockerfile 6 | context: . 7 | image: harlandlohora/nginx 8 | container_name: nginx 9 | ports: 10 | - 80:80 11 | networks: 12 | - production_network 13 | depends_on: 14 | - node1 15 | - node2 16 | - node3 17 | mongodb: 18 | image: mongo 19 | networks: 20 | - production_network 21 | node1: 22 | build: 23 | dockerfile: ./docker/alura-cars.dockerfile 24 | context: . 25 | image: harlandlohora/alura-cars-compose 26 | container_name: alura-cars-1 27 | ports: 28 | - "3000" 29 | networks: 30 | - production_network 31 | depends_on: 32 | - "mongodb" 33 | node2: 34 | build: 35 | dockerfile: ./docker/alura-cars.dockerfile 36 | context: . 37 | image: harlandlohora/alura-cars-compose 38 | container_name: alura-cars-2 39 | ports: 40 | - "3000" 41 | networks: 42 | - production_network 43 | depends_on: 44 | - "mongodb" 45 | node3: 46 | build: 47 | dockerfile: ./docker/alura-cars.dockerfile 48 | context: . 49 | image: harlandlohora/alura-cars-compose 50 | container_name: alura-cars-3 51 | ports: 52 | - "3000" 53 | networks: 54 | - production_network 55 | depends_on: 56 | - "mongodb" 57 | networks: 58 | production_network: 59 | driver: bridge 60 | -------------------------------------------------------------------------------- /views/index.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 |