diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..0f1d9a9 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +/node_modules +package-lock.json +uploads/* +access.log +env.list.mongo +.env diff --git a/.gitignore b/.gitignore index 7a4d55f..4fdf7f9 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ package-lock.json uploads/* .env access.log +env.list.mongo diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..9e7cef0 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,17 @@ +FROM node:10 + +WORKDIR /app + +COPY package.json ./ + +RUN npm install + +COPY . . + +EXPOSE 3001 + +RUN npm install -g nodemon + +RUN ls -l + +CMD [ "nodemon", "index.js" ] diff --git a/Dockerfile.sample.db b/Dockerfile.sample.db new file mode 100644 index 0000000..40f73a9 --- /dev/null +++ b/Dockerfile.sample.db @@ -0,0 +1,3 @@ +FROM mongo:latest +VOLUME ~/Bureau/docker_test/mongo/data +EXPOSE 27017 diff --git a/db-fixture/Dockerfile b/db-fixture/Dockerfile new file mode 100644 index 0000000..dc860df --- /dev/null +++ b/db-fixture/Dockerfile @@ -0,0 +1,4 @@ +FROM mongo + +COPY fixture.json /fixture.json +CMD mongoimport --host mongo --db sopptas --collection users --type json --file /fixture.json --jsonArray diff --git a/db-fixture/README.MD b/db-fixture/README.MD new file mode 100644 index 0000000..a04e362 --- /dev/null +++ b/db-fixture/README.MD @@ -0,0 +1 @@ +This containers sole purpose is to import seed data into the database. diff --git a/db-fixture/fixture.json b/db-fixture/fixture.json new file mode 100644 index 0000000..410330d --- /dev/null +++ b/db-fixture/fixture.json @@ -0,0 +1,27 @@ +[{ + "_id": { + "$oid": "5fda0575a14be43064171366" + }, + "reclamations": [], + "role": "citizen", + "name": "amine", + "email": "bellarej.amine2@gmail.com", + "password": "$2b$10$nsEYX0Yfd5y1JYQMX6hOd.P2ar6wmL0u/i1RFVlFN1B1h0drS7aoG", + "__v": { + "$numberInt": "0" + } + }, + { + "_id": { + "$oid": "5fdce021f5cb9566fbb2fce6" + }, + "reclamations": [], + "role": "admin", + "name": "amine", + "email": "bellarej.amine@gmail.com", + "password": "$2b$10$scQsaHRWmu3L5WuQ9iFLbOfQ1qJ9Q3O6j0JbbRBfp4tRttKKduz9a", + "__v": { + "$numberInt": "0" + } + } +] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..e438054 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,33 @@ +version: "3" +services: + app: + container_name: express-mongo + restart: always + build: ./ + ports: + - "3001:3001" + volumes: + - ./models:/app/models + - ./middlewares:/app/middlewares + - ./controllers:/app/controllers + links: + - mongo + env_file: + - .env + depends_on: + - mongo + mongo: + container_name: mongo + image: mongo + ports: + - "27017:27017" + volumes: + - /home/dev/Bureau/docker_test/mongo/data:/data/db + + db-fixture: + build: ./db-fixture + container_name: db-fixture + links: + - mongo + depends_on: + - mongo diff --git a/helpers/dbConnect.js b/helpers/dbConnect.js index a2c3480..45eb2c4 100644 --- a/helpers/dbConnect.js +++ b/helpers/dbConnect.js @@ -1,14 +1,17 @@ const mongoose = require('mongoose'); let config = require('config'); -const db_name = config.DBHost -const db_server = 'localhost' -mongoose.connect(`mongodb://${db_server}/${db_name}`, { +const dotenv = require('dotenv'); +dotenv.config(); +const db_name = config.DBHost +const db_server = process.env.DB_SERVER +const db_port = process.env.DB_PORT +mongoose.connect(`mongodb://${db_server}:${db_port}/${db_name}`, { useNewUrlParser: true, useUnifiedTopology: true, useFindAndModify: false, useCreateIndex: true - }).then(response => console.log(`connect to ${db_name} database successfully`)) + }).then(response => console.log(`connect01 to ${db_name} database successfully`)) .catch(err => console.log('could not connect '+err)) module.exports = mongoose diff --git a/helpers/sendMail.js b/helpers/sendMail.js index b7f4a1c..150c840 100644 --- a/helpers/sendMail.js +++ b/helpers/sendMail.js @@ -1,6 +1,7 @@ const nodeMailer = require("nodemailer"); const dotenv = require('dotenv'); dotenv.config(); + const transporter = nodeMailer.createTransport({ service: 'gmail', // by defaukt gmail don't allow us to use authentification like this diff --git a/index.js b/index.js index 1f5ff16..a9722f2 100644 --- a/index.js +++ b/index.js @@ -5,7 +5,9 @@ dotenv.config(); const hostname = process.env.SERVER || '127.0.0.1'; const port = process.env.PORT || 3000; - +app.get('/', (req, res) =>{ + res.send("it's working :)") +}) const server = http.createServer(app); server.listen(port, hostname, () => { diff --git a/run-with-docker.txt b/run-with-docker.txt new file mode 100644 index 0000000..7317d5d --- /dev/null +++ b/run-with-docker.txt @@ -0,0 +1,12 @@ +run mongo container + with envirement variable: + sudo docker run -d --name mongo-on-docker -p 27017:27017 + -v ~/Bureau/docker_test/mongo/data:/data/db + -e MONGO_INITDB_ROOT_USERNAME=amine -e MONGO_INITDB_ROOT_PASSWORD=amine + mongo + with envirement variable file: + sudo docker run -d --name mongo-on-docker -p 27017:27017 + -v ~/Bureau/docker_test/mongo/data:/data/db + --env-file ./env.list.mongo mongo + with custom image: + sudo docker run -d --name mongo-on-docker -p 27017:27017 testmongo:v1