Browse Source

working on mongodb authentication with nodejs inside docker

master
Yutsuo 7 years ago
parent
commit
72c5aab36a
  1. 4
      Dockerfile
  2. 10
      README.md
  3. 2
      app.js
  4. 1
      docker-compose.yml
  5. 71
      org_cheat_sheet

4
Dockerfile

@ -3,7 +3,7 @@ FROM node
WORKDIR /app
# Copying npm config file setting npm repository location.
# COPY .npmrc .npmrc
COPY .npmrc .npmrc
# If you add the package.json first and run npm install later,
# Docker won’t have to install the dependencies again if you
@ -14,6 +14,8 @@ COPY package.json /app
RUN npm install
COPY . /app
ENV myName="John Doe"
CMD node app.js
EXPOSE 3001

10
README.md

@ -1 +1,9 @@
Nothing to see here yet, folks.
Quarta tarefa:
Faça com que o usuário e a senha do MongoDB seja passada para seu App utilizando variável de ambiente do Docker.
Utilize um script bash para validar se as variáveis estão preenchidas antes de levantar o NodeJS.
Mande foto do Dockerfile, código fonte e script bash.
* passar usuário/senha por varíavel de ambiente docker (ENV). Usar bash para verificar se variável foi mesmo passada, se os campos de user/pass foram preenchidos.

2
app.js

@ -2,7 +2,7 @@ var express = require('express');
var app = express();
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var database = 'mongodb://mongo:27017/test';
var database = 'mongodb://myTester:test@mongo:27017/test';
var today = new Date();
var counter = 0;
var Prometheus = require("prom-client");

1
docker-compose.yml

@ -14,6 +14,7 @@ services:
mongo:
container_name: mongo
image: mongo
command: --auth
ports:
- "27017:27017"
prometheus:

71
org_cheat_sheet

@ -0,0 +1,71 @@
SUPER ONBOARD HELP CHEATSHEET
PREPARING ENVIROMENT
// Simple way to connect to database
mongoose.connect(database).then(
() => {console.log('Database is connected') },
err => { console.log('Can not connect to the database' +err)
});
npm :: config
// npm config set registry <registry url>
// using command line
npm config set registry http://npm.repo.labbs.com.br
// using .npmrc file
registry=http://npm.repo.labbs.com.br
// Docker :: show container IP
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' [container_name]
// Docker :: daemon config
// daemon file path
/etc/docker/daemon.json
// daemon file content
{
"bip": "192.168.128.1/18",
"dns": ["172.18.51.10", "172.18.51.11"]
}
// Docker :: send command line
docker exec -it [container_name]
// Ubuntu :: reload daemon and start/restart/stop services
systemctl daemon-reload
systemctl restart docker
// Ubuntu :: check service status
// all services
service --status-all
// one specific service
service docker status
// MongoDB Access control
// connecting to mongo shell inside docker:
docker exec -it mongo mongo
// create admin user
use admin
db.createUser(
{
user: "admin",
pwd: "admin",
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)
exit
// reconnect to mongo shell turning access control on
docker exec -it mongo mongo --auth
// create new user
use test
db.createUser(
{
user: "myTester",
pwd: "test",
roles: [ { role: "readWrite", db: "test" },
{ role: "read", db: "reporting" } ]
}
)
exit
// logging in as new user
mongo -u "myTester" -p "test" --authenticationDatabase "test"
Loading…
Cancel
Save