mauro pereira

há 2 anos · 4 min. de leitura · ~100 ·

Blogging
>
Blog por mauro
>
Mongodb, Nodejs e Docker

Mongodb, Nodejs e Docker

A AWS web services, nos dá uma gama muito grande de serviços, onde pode-se apenas preocupar-se com o desenvolvimento e gestão do seu aplicativo, deixando as configurações de modo automático e fixando-se em outros pontos.

Neste tutorial, vamos montar um ambiente sem uso do AWS RDS em uma máquina local com nodejs, mongodb e docker.

Pré-requisitos:

  • nodejs e npm instalados
  • docker e docker-compose instalados
  • conhecimento em linha de comando neste caso linux, mas pode ser o sistema que estiver usando
  • conhecimento em javascript
  • conhecimento em node e npm (node package manager) -
  • conhecimento básico de redes
  • conhecimento básico de banco de dados

Na linha de comando do seu computador onde queira ter seu workspace digite o seguinte comando:

  • npm init -

Siga as instruções e construa o esqueleto da sua aplicação node conforme imagem abaixo:

Atmdades © Terminal v 21dejul 1604 ©
= mauros@mauroslucios: ~/Documentos/node projects tutorial
mauros@nauroslucios: S$ npn init

This utility will walk you through creating a package. json file.
It only covers the most common items, and tries to guess sensible defaults.

tion on t fields

See ‘npn help init for definitive document
and exactly wha

hey do.

sll a package and
on file.

rwar tn
he package. §

sll <pkg> a

torial nodejs, postgresql, pgadain e docke
entry point: (index. ys) index. fs
command

nodes, docker, po
aurosluciosggnail.con

(150)

write to /home/mauros/Documentos/node project

resql, pgadain

utortal/package. json:

ortal nodejs, postgresql, pgadain e docker”,

“echo \"Error: no test specified\” 88 exit

“pgadain”

“author
“license”:

urosluciosggnatl.con,
tise

Vamos instalar as dependências node via npm:

  • npm install --save express mongoose
Atmdades ® coogle Chrome + 21deju 1630 ©

PY
- @
. mauros@mauroslucios: ~/Documentos/node_projects/tutorial Q = @
‘. mauros@mauroslucios: ~/Documentos/node pr... mauros@mauroslucios: ~/Documentos/node pr... mauros@mauroslucios: ~/Documentos/node pr...
mauros@naurosluctos:~/Docunentos/node_projects/tutorials npa install --save express mongoose
npn fotiis created a lockfile as package-lock. json. You should commit this file.
npn torialgl.0.0 No repository fleld.

+ expressgd.18.1
+ mongoosegs. 4.6
added 85 packages from 185 contributors and audited 85 packages in 17.729%

11 packagy
run np:

+ are looking for funding
und for details

found 8 vulnerabilities

Hew version of npn available! .

Run np install -g np= to upd,

maurosg@naurosluctos :~/Docunentos /node_projects/tutorials

Para fazermos o “live reload da aplicação” iremos usar o nodemon, use o comando abaixo para instalar sua dependência:

  • npm install --save-dev nodemon
Atdades Terminal v 21dejud 1635 © PY
(5 mauros@mauroslucios: ~/Documentos/node_projects/tutorial a a @
mauros@mauroslucios: ~/Documentos/node pr... mauros@mauroslucios: ~/Documentos/node pr... mauros@mauroslucios: ~/Documentos/node pr... -

naurosgnauroslucios: $ npn install --save-dev nodemon

> nodenong?.0.19 po:
> node bin/postins

install /home/mauros/Documentos/node projects)
all [| exit 8

orial/node_modules/nodemon

> https: //opencollective.con/nodenon/donate

npn SKIPPING OPTIONAL DEPENDENCY: fieventsg-2.3.2 (node modules/chokidar/node modules/fsevents)
npn SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fseventsgz.3.2: wanted {0s™: darwin”, arch
ux” "arch": "x64"})

npn SEER tutortalel.o.o wo repository field.

+ nodenong?.0.19
added 32 packages from 28 contributors and audited 118 packages in 6.7055

any") (current: {Tosi "lt

14 packages are looking for funding
run npn fund for details

found © vulnerabilities

nauros@naurosluctos: ty |

Vamos criar um ponto de start para o nodemon no package.json para iniciar a aplicação no ambiente de dev, abra a aplicação no seu editor preferido. No meu caso uso visual studio code.

  • “start”: “nodemon index.js”

Seu arquivo package.json deverá estar desta forma depois da alteração:

Atmdades

"QQ LOEI

2

¢

5

) visual Studio Code ¥

ESTRUTURA DO COZCO
Ln 50 TEMPO

oockR c
ockER maces

oxTamers

AZURE CONTAMER RECITRY
ocockeR wus

SUCCISTED DOCKER HUB IMAGES.
@woMo

21dejul 1640 ©

package json - tutorial - Visual Studio Code

package json

1h 12.Col 14

Fronon 2

ute

ON Bloive &

oreo

Agora iremos criar uma rota na aplicação usando express, mas para isto temos de criar um arquivo de entrada da nossa aplicação chamado “index.js” na raiz do projeto:

  • index.js

Este arquivo index.js deverá ter o sequinte conteúdo abaixo:

const express = require('express');

const app = express();

const PORT = 3000;

app.get('/',(req,res) =>{

 res.json({mesage: ‘Hello API com nodejs, mongodb e docker’});

})

app.listen(PORT,()=>{

console.log(`app running on url http://localhost:${PORT}`);

})

Atmdades ) Visual Studio Code ed 1731 ® Sl

index js - tutorial - Visual Studio Code a @

17.07.17)
to load the JavaScript Standard Sty the document /hos: ocumentos
ojects/tutor 1al/datasase/ connection |
LSTRUTURA DO COICO To use JavaScr: tandard Style please instal avasc € by
Una 00 TEMPO in the workspace fol tora
ally using insta andard” You to reopen the workspace after installing

COCKER CONTAMIRS

JavaScript Standard Style
COCKER ACES

AZURE CONTAMER RECITRY

Alternatively y.

oockzs Kus executing the —l
SUCCESTED DOCKER HUB IMAGES
®om Ln3 Colds fiwpmord UTE 13 drasa @Colve 8 JavaScript SandudShle Prete (3

Agora já temos uma aplicação funcional com 1(um) endpoint e para testar vamos executar o seguinte comando na sua CLI:

  • npm run start (irá chamar o nodemon para fazer o live reload da aplicação)

Veja uma tela igual a abaixo:

¢RDBE "OQ LOE

2
5
a
a
2

@ Coogle Chrome v

nauros@nauroslucto:

> tutorialgl.0.8
> nodenon index

13

n] watching p
n] watching e:

app running on url h

Document

+// local

er

mauros@mauroslucios: ~/Documentos/node pr...

t /hone/mauros/Docunentos/node project

21dejul 1653 ©

mauros@mauroslucios: ~/Documentos/node projects tutorial

mauros@mauroslucios: ~/Documentos/node pr... mauros@mauroslucios: ~/Documentos/node pr.
tortal$ npa run

torial

Vá no seu browser até http://localhost:3000 e veja a tela abaixo:

<u ow Qh »O0@

 passwordReco.. @ hilhos @ Mauroslucios BB cursos BB carros BB acoes » @ Outros favontos

€ 2 C 0 © localhost 30
* Bookmarks (7 PostgresQLT.. (W) Mysql @ RedHat FRee

«
“message” Hello APD como
)
1 // 26220721165
2 // http://localbost :3060/
¢ “message”: "Hello API com nodes, mongodd e docker”

Execute “CTRL+C” no seu terminal para finalizar sua aplicação.

Com sua aplicação funcional agora é hora de inserir o docker no projeto.

Neste momento temos o projeto inicial em nodejs criado e vamos adicionar o docker na aplicação. Para isto iremos criar 2(dois) arquivos na raiz do projeto:

  • docker-compose.yml
  • Dockerfile (exatamente com este nome e sem extensão)

O conteúdo destes arquivos serão:

Dockerfile:

  • FROM node:16.14.0 
  • MAINTAINER mauroslucios
  • RUN mkdir -p /var/www/app/node_modules && chown -R node:node /var/www/app
  • WORKDIR /var/www/app
  • COPY package.json ./
  • RUN npm install
  • COPY . .
  • COPY --chown=node:node . .
  • USER node
  • EXPOSE 3000
  • CMD ["node","app.js"] ENTRYPOINT ["npm","start"]
Atmdades ) visual Studio Code ¥ 21dejul 1756 © PACER IR

Dockertile - tutorial - Visual Studio Code a @

L 4
ESTRUTURA DO COZCO
nA 50 TEMPO
00CKER ConTAmRs

; oocxrn maces fre sama oo Be )
AzuRt CoNTAmER RECISTRY os + Standard Style: command

soy > oocxim ve fl

SUCCESTED DOCKER WB IMAGES Failed to load the JavaScript tyle 1 the document /home/mauros/Docus. 08/1 ojects/tutarial

Xx @oMt In8Col27 fwpxord UTS IF Docketle @Colve & Ofer ao &

Nesta etapa, temos que fazer o build da aplicação para gerar a imagem que será usada no docker-compose.yml para criar o container do nodejs, use o comando abaixo, mas troque pelo seu usuário(mauroslucios) dockerhub.

  • docker build -t mauroslucios/tutorial:1.0 .    
  • docker build -t <seu-usuario-dockerhub>/tutorial:1.0 .

O comando acima deverá produzir a seguinte saída abaixo no terminal:

Atdades @ Coogle Chrome v 21dejud 1700 ©

mauros@mauroslucios: ~/Documentos/node projects tutorial Q : @

mauros@mauroslucios: ~/Documentos/node pr... ~  mauros@mauroslucios: ~/Documentos/node pr... mauros@mauroslucios: ~/Documentos/node pr...

nauros@naurosluctos

dcunen

node_projec
ETI] build context to Docker daemon 17.6248
tep 1/12 : FROM node:16.14.8

> 101513154291
tep 2/12 : MAINTAINER mauroslucios

ortals docker bulld -t mauroslucios/tu

ortal:1.e .

> Using cache
> bcdeas33s7ey
tep 3/12 : RUN mkdir -p /var/www/app/node nodules 88 chown -R node:node [var /www/app
> Using cache
> Bc3Bace37503
tep 4/12 : WORKDIR [var /www/app
> Using cache
> 697b389cb02
tep 5/12 : COPY package. json .
5 > badbfdrbfoe
tep 6/12 : RUN npm in: 188
> Running in 773e58100850

added 117 packages, and audited 118 packages in 11s

14 packagy

+ are looking for funding
run npn fund for details

found 8 vulnerabilities

»
3g  EERE Res Trot Cong el rests tae
Bs.

Removing intermediate container 773e58108850
> 9385¢34debss
tep 7/12 : COPY . .
> 271263548090
Step 8/12 : COPY --chown=nod
> 696dbsb114c7
Step 9/12 : USER node

Ao final deverá aparecer a mensagem de sucesso do build conforme imagem abaixo:

  • Successfully tagged <seu-usuario-dockerhub>/tutorial:1.0
2
5
a
a
2

® Google Chrome + 21dejul 1704 © GoMod

_ mauros@mauroslucios: ~/Documentos/node_projects/tutorial fol a @

mauros@mauroslucios: ~/Documentos/node pr... ~  mauros@mauroslucios: ~/Documentos/node pr... mauros@mauroslucios: ~/Documentos/node pr...

added 117 packag

, and audited 118 packages in 11s

14 packages are looking for funding
run npn fund for details

found 8 vulnerabilities

Removing intermediat
> 9385c34debse
Step 7/12 : COPY .
> 271a635d8090
Step 8/12 : COPY --chown-node:node .
> 696dbsb114c7
Step 9/12 : USER node
> Running in 0522572¢292¢
Removing intermediate container 0522572¢292
> a6ce373995e7
Step 10/12 : EXPOSE 3000
> Running in doef184¢¢3%b
Removing intermediate container doef184ff3fb
> s7b7d1f87a7a
Step 11/12 : CD [ “node”, app. J
> Running in 05091ca90243
Removing intermediate container 05091ca90243
> 6af1b237810a
Step 12/12 : ENTRYPOINT [“npa”,~sta
> Running in Sacc7b?3sedd
Removing intermediate container Sacc7bz3aedd
> d1e688d6df 51
ully bullt die6ssdodfs1
Successfully tagged mauroslucio:
maurosgnauroslucios:

container 773e58100850

¢RDBE "®Q LOE

utortal:l.e

ocunen

ortals

Execute o comando abaixo para ver a imagem docker do nodejs criada:

  • docker images

Vamos criar a conexão com o banco de dados mongo. Crie uma pasta chamada database na raiz do seu projeto e nesta pasta crie um arquivo chamado: “connection.js”. Adicione o conteúdo abaixo no mesmo. 

const mongoose = require('mongoose')

mongoose.connect('mongodb://mongodb:27017/apirest').then(()=>{    

console.log('Mongodb conectado...')

}).catch((err)=>{    

console.log('Houve um erro ao conectar: '+ err)

})

mongoose.Promise = global.Promise

module.exports = mongoose

Atmdades ) visual Studio Code ¥ 21dejul 1754 © PACER IR

connection.js - tutorial - Visual Studio Code

fam oRADOR Notas sobre a Vera: 1 69 package | ncex B connection x heeft

- re
sole log( Mouve cot er
mongoose Promise = global Promise
Crp 9 module exports = rongoosq
package
ript Standard Style’ command
17.07

to load the JavaScrip

ESTRUTURA DO COICO

nee To use yle please install JavaScript Standard Style b $* in the
00CKER ConTAmRs cio
or g 3 standard’ You need U 1 the workspace after installing JavaScript Standard

7) > cocxzm maces Fy
= azuat contamen atcsray

cock nue Alternatively y. andard Style for Disable

SUCCESTED DOCKER WB IMAGES Java t Stands
x @oA 1n9.Col26 fipmord UTES Li (4 JeaSopt Colne @ JlnaSowt Sundud Site  o Pretber w (2

No arquivo docker-compose.yml na raiz do projeto insira o conteúdo abaixo:

version: "3.7"

services:  

web:    

     image: mauroslucios/tutorial:1.0    

     ports:      

          - 3000:3000    

     volumes:      

          -  ./:/var/www/app   

      environment:

           NODE_ENV: development    

      depends_on:      

          -  db    

      links:      

         -  db      

db:    

       image: 'mongo'    

       container_name: mongodb    

       ports:     

           -  '27017:27017'    

       volumes:      - ./data/db:/data/db      

Atmdades

¢

5

J visual Studio Code v

ESTRUTURA DO COZCO
Ln 50 TEMPO

oockR c
ockER maces

oxTamers

AZURE CONTAMER RECITRY
ocockeR wus

SUCCISTED DOCKER HUB IMAGES.
@wom

Java

Faile

21dejul 17

docker-compose.yml - tutorial - Visual Studio Code 2

the document /h:

maur0s/00 0jects/tuter ial

1n4ColY) ipo? UTES Li () Compare @Colwe & Prete Ww

Agora é monento de rodar a aplicação em um container docker, para isto execute o comando abaixo:

  • docker-compose up (aqui não usei a flag -d para ver o resultado do log no console)

Veja uma tela parecida com a mesma abaixo:

Atmdades 2 Tecminal +. 21dejul 1725 © PA -
© mauros@mauroslucios: ~/Documentos/node_projects/tutorial Q a @
mauros@mauroslucios: ~/Documentos/node pr... «  mauros@mauroslucios: ~/Documentos/node pr... mauros@mauroslucios: ~/Documentos/node pr... -
maurosgnaurosluctos:~/Docune node projects/tutorials docker-compose up
Creating network “tutorial default” with the default driver
Creating mongodb ... dor
Creating tutorial web 1 ... dor
E Attaching to mongodb, tutorial web 1
1
1 | > tutorialgl.e.e start
1 | > nodemon index. js “node” “app. js”
1
web 1 node=on
1 on s
1 on] watching
1 on] watching extensi
1 " n] starting node in app. §
db | {Tt7:{"Sdate":72022-07-21720:22:44.469+00:00}," 5": TCTITHETWORKT, “1dT:4915701, Tctx™:T-, "msg: Initlalized wire specificati
. on”, attr=: {spec :{~incomingExternalClient™: {~ninWireversion™:0, "maxWireversion”:13}, incontngInternalClient™: {~ninWireversion™

slon:13}, outgoing: {“minWireversion:0, “maxwireversion=:13},"sInternalClient =: true} }}

9 {7t7:{"Sdate~:72022-07-21720:22:44.780+00:007},s™: "1", Cc”: CONTROL, ~1d~:23285, “ctx™:"-~,"msg”: Automatically disabling TLS
1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols ‘none’ ~}
TT {TSdate”:T2022-07-21T20:22:45.203400:007}, 5":
red during Networkinterface startup”)

godt {"t7:{"Sdate 2027-07-21720:22:45.245400:007},757:717, “CcT:TNETWORK™, “{d”:4648601, “ctx”
vatlable. If TCP FastOpen is required, set tcpFastOpenServer, tcpiastOpenClient, and tcpfastOpenQueuesize.”}
{"t7:{"Sdate”:72022-07-21720:22:45.537+00:007},7s" ©, TeTiTAsIOT, “idT:22001, TetxT:T
red during Networkinterface startup”)

-as1oT, “tdT:22681, -

,"Rsg™: No Transportiayer configu

597: TImplicit TCP FastOpen una

597: No Transportiayer configu

godt {"t7:{"Sdate”:72022-07-21720:22:45.56800:007},7s":"1", “cT:iTREPLT, “1dT:5123008, “ctx”: 597: "Successfully registered P
fs rinaryOnlyService”,attr=:{ “service”: ~TenantMigrationDonor Service, ns”: “config. tenantMigrationDanors™}}
j0db | {Tt7:{"Sdate":"2022-87-21720:22:45.568+00:007},5": "1", “c": REPL”, 1d7:5123008, “ctx™:“main”, msg”: "Successfully registered P
rinaryOnlyService”,"attr™:{“service”:~TenantMigrationRecipientservice™, ns": "config. tenantiigrat ionReciplents™}
9 {7t7:{"Sdate~:72022-07-21720:22:45.569+00:007},"s™: "1", “Cc”: CONTROL, ~1d~:4615611, -“ctx”:~initandlisten”, ongod8 starting

fume "QO LOE

TL TattrTi{TpidTi1, “port”

27017, dbPath™:~/data/db", “architecture” :"64-bit~, host": "6573182df8a9" }}
jodb | {Tt7:{"Sdate~:2022-07-21720:22:45.569+00:007},5": "1, ~c*: CONTROL®, -1d~:23483, “ctx":"{nitandlisten”,"msg™: Build Info", "at
=: {~butldInfo™: {version 37,gltversion™:~657feasa61a74d7a79df 7af fBeabc fObc 742b748", ~opensSiversion™: "OpenSSL 1.1.11 31 Mar 20207, mod
“tcmalloc”, “environment”: {~distnod™:~ubuntu2004~,"distarch™: "x86 64", target arch: x86 64-}}}}
2022-07-21720:22:45.569+00:007},"5™: "1", ~c i CONTROL™, ~1d~:51765, -ctx”:"initandlisten”

397: Operating System

Se você for bem atento e olhar no log do terminal, irá ver a mensagem: “Mongodb conectado”,  conforme imagem abaixo:

Atdades Terminal v 21dejul 1728 © 0) PAE v
© mauros@mauroslucios: ~/Documentos/node_projects/tutorial Q a @
mauros@mauroslucios: ~/Documentos/node pr... «  mauros@mauroslucios: ~/Documentos/node pr... mauros@mauroslucios: ~/Documentos/node pr... -

attr t172.19.8.

{“remote’ 0348”, "wuld": "aeccoelc-1f7e-4169-8ce8-efa17599cad3”, “connect ionid”
17, TCTiTNETWORKT, "id

“name”: “node Js | Mongoose”, “version

,"connectionCount™:1}
51800, “ctx:"connl”, msg”: client metadata”, attr”:
4.7.87),70s":{"type~: “Linux, “name”: "linux"

{"t7:{"Sdate™:"2022-87-21720:22:49.699+00:00"}, 5"
conn1, “doc

{“remote”:"172.19.0.3

03487, “client”

L"architecture:"x647, “version” :"5.15.0-41 generic"), "platforn: "Node. js v16.14.8, LE (unified)”, version=:74.7.0(6.4.67}}}
web 1 | Mongodb conectado. ..

godt {"t7:{"Sdate":"2022-87-21720: ST, TeT:iTINDEXT, at) 0345, “ctx”:"LoglcalSessionCacheRefresh™ 5g”: "Ind
ex bulld: done building”, attr™:{~bullduuID™ :null, names config. systen. sessions”, "index™:" td ~, commitTinestanp™:null}}

godt {"t7:{"Sdate” ©22-07-21720:22:50.062 +0! 07 },"s" ST, TeT:iTINDEXT, “idT:iz0345, “ctx”:"LoglcalSessionCacheRefresh™, “msg”: "Ind

ex bulld: done building”, attr™:{bullduUUID" :null, namespace”: "config. systen. sessions”, index: LsidTTL Index", connitTinestanp™ inull}}

jodb | {Tt7:{"Sdate":2022-07-21720:22:50.062+00:007}, 5": "1", ~c": COMMAND™, -1d~:51883, “ctx”: LogicalSessionCacheRefresh”, msg”: Slo
w query”, "attr :{“type:" config. systen. sessions”, “command”: {createIndexes™: “system. sessions”, v™:2, indexes”: [ {key :{~lastuse
“:1), name”: "Ls{dTTLIndex", “expireAfter Seconds”: 1800} 1,” ignoreUnknownndexOpt ions”: false, “wr iteConcern™:{}, Sdb™: "config™},“nunvields”:0, resl
en:114," locks”: {~ParallelBatchur i termode™ : {~acquireCount™:{“r=:4}},"ReplicationStateTransition™: {~acquireCount™: {*w":5}}, Global~: {~acquireCo
unt=:{7r7:5,"w":1}}, “Database”: {~acquireCount™:{~r~:3,7w:1}}, Collection: {~acquireCount™:{ r~:3, w":1}}, Mutex:{"acquireCount :6}1),7s
torage™:{}, protocol=: “op msg”, durationMillis":476}

{7t7:{"Sdate":72022-07-21720:23:00.212+00:007} "5": "1", “CT: NETWORK™, ~1d":22943, “ctx”: listener”, msg
{“remote”:7172.19.0.3:60350", “uid”: ~8bebd13c-1cas- 4586-905 9a8adad37fd3”, “connect ionid™:2, “connect ionCount
{"t7:{"Sdate":"2022-07-2112 5.214400:007} "57:71, “CT: NETWORK™, ~1d”:51808, “ctx :"conn2”,"msg”: client metadata”, attr”:
172.19.8.3:603507, "client": "conn2~, “doc: { “driver =: {“nane™:~node)s Mongoose”, “version” :4.7.07}, 70s": {~type™: Linux", name”: "linux"
L"architecture:"x64", version” :"5.15.0-41 generic"), "platforn™: "Node. js v16.14.8, LE (unified)”,"version=:74.7.0(6.4.67}}}

jodb | {Tt7:{"Sdate~:2022-07-21720:23:48.315+00:007},"5": "1", ~c™: STORAGE™, -1d~:22438, ~ctx":"Checkpointer™, msg” :"WiredTiger messag
e-, "attr ~:7[1658435028:315556][1:0x71891368d700], WT_SESSION.checkpoint: [WT_VERS CHECKPOINT PROGRESS] saving checkpoint snapshot m
in: 34, snapshot max: 34 snapshot count: 0, oldest timestamp: (8, 0) , meta checkpoint timestamp: (8, 8) base write gen: 17}}

jodb | {Tt7:{ $date" :"2022-07-21720:24:48.629+00:007},"5": "1", ~c*: STORAGE™, ~1d~:22438, “ctx”: Checkpointer™, msg”: "WiredTiger messag
€", "attr": { “message :"[1658435088:629381](1:0x7891368d700], WT _SESSION.checkpoint: [WT VERB CHECKPOINT PROGRESS] saving checkpoint snapshot m
tn: 37, snapshot max: 37 snapshot count: 0, oldest timestamp: (8, 0) , meta checkpoint timestamp: (8, 8) base write gen: 17}}

jodb | {Tt7:{"Sdate":2022-07-21720:25:48.883+00:007},"5": "1", ~~: STORAGE™, ~1d~:22438, “ctx”: Checkpointer™, msg”: "WiredTiger messag
€", "attr" :{“message:"[1658435148:883292](1:0x77891368d700], WT _SESSION.checkpoint: [WT VERB CHECKPOINT PROGRESS] saving checkpoint snapshot m
in: 39, snapshot max: 39 snapshot count: 0, oldest timestamp: (8, 0) , meta checkpoint timestamp: (8, 8) base write gen: 17}}

jodb | {Tt7:{ $date" :"2022-07-21720:26:48.960+00:007},"5": "1", ~c~: STORAGE™, ~1d~:22438, “ctx”: Checkpointer™, msg”: -WiredTiger messag
€", "attr": (“message :"[1658435208:960876](1:0x7891368d700], WT SESSION.checkpoint: [WT VERB CHECKPOINT PROGRESS] saving checkpoint snapshot m
in: 41, snapshot max: 41 snapshot count: 0, oldest timestamp: (8, 0) , meta checkpoint timestamp: (8, 8) base write gen: 17}}

4b | {Tt7:{"Sdate":2022-87-21720:27:49.130+00:007},"5": "1", ~c*: STORAGE™, ~1d~:22438, “ctx”: Checkpointer™, msg”: "WiredTiger messag
ess © attro:{ message” :"[1658435269:130044](1:0x718913684700], WT_SESSION.checkpoint: [WT VERS CHECKPOINT PROGRESS] saving checkpoint snapshot m
43, snapshot max: 43 snapshot count: 8, oldest timestamp: (8, 8) , meta checkpoint timestamp: (9, 0) base write gen: 1°}}

Connection accepted”,

attr

}

{ remote

BE QQ LO0FB

Volte ao browser na url: http://localhost:3000 e veja sua aplicação docker em funcionamento. "Isto é magnífico!" I love you docker.

Loe Elen Ou Der Qu Be Ge Gen wer ve Ele mle ve Bor we RRR coo

€ > C 0 O lcalhostioos <x ww QO »0@
# Bookmarks (4 PostgreSQUT.. () Mysal @ Redhat FRee. Gy passwordReco  @ fihos @8 Mauroslucos 8B cursos BB carros BB acoes » Outros favonitos
i = 5
“mesvage ello APD com nodejs. mangodb «
)
—
1/7 20220721172349
2 // htip://localhost :3808/ oo
~
v
E “message”: "Hello API com nodes, mongodd e docker”

Na sua CLI execute os seguintes comandos de verificação docker:

  • docker ps (verás os containers em execução)
  • docker inspect <id-container> (mostrará as configurações do container)
  • docker stop <id-container> (para o container em execução)
  • docker exec -it <id-container-mongo> /bin/bash (entrará no terminal do container)
  • dentro do terminal do container mongo execute: mongo (entrará no shell do mongo)
  • execute “show databases” e verá os bancos criados no mongo
  • CTRL + P + Q sai do shell do container
Atdades @ Coogle Chrome v 21dejd 1738 © RARE
ty
. root @6573182d18a%: / Q a
© mauros@mauroslucios: ~/Documentos/node pr... root 657318289: / © mauros@mauroslucios: ~/Documentos/node pr... -
2urosluctos :~/Docunentos /node_projects/tutorials docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMES
892c78aacB8a  mauroslucios/tutorial:1.8 “npn start node app._~ 15 minutes ago Up 14 minutes 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp

utorial web 1

6573182df8a9  mongo “docker -entrypotn!
tcp mongodb

maurosgnaurosluctos:~/Docunentos /node_projects/tutorials docker exec -it 6573182df8a9 /bin/bash
r00t@6573182d18a9: /8 mango

MongoD8 shell version v5.0.3

connecting to: mongodb://127.0.8.1:27817/7conpressors-disabledsgssapiservicenan
Implicit session: session { “1d” : UUID("c76429dd-bfbc-480d-991e- 7956fdaadcd0™)
MongoD8 server version: 5.0.3

7017->27017

© 15 mlnutes ago Up 14 minutes  0.0.0.0:27017->27817/tcp

mongodb

Warning: the ~mongo” shell has been superseded by “mongosh™
which delivers improved usability and compatibility. The “mongo™ shell has been deprecated and will be removed tn
an upcoming release.

We recommend you begin using “mongosh™.

on instructions, see

angodb. con/mangodb - shell/ inst

Welcome to the MongoDs shell.

For interactive help, type “help™.

For more comprehensive document,
https: //docs.nangodb. con/

Questions? Try the MongoD8 Developer Community Forums
https://community.mangodb. con

on, see

The server generated these startup warnings when booting:
2022-07-21720:27:45.708+00:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See h:
nongodb or g/core/prodn:
2022-07-21720:22:48.293+00:00: Access control is not enabled for the da
stricted

tp://dochub.

abase. Read and write access to d. on ts unre

and configur

Enable MongoDB's free cloud based monitoring service, which will then receive and display

Com estes passos, temos um ambiente nodejs com mongo funcionado dentro do docker. Se quiser pode trocar pelo banco de dados que seu projeto se adaptar melhor, conforme necessidade.

OBS: o backup do seu banco mongo está na pasta “data/db” na raiz do seu projeto.

Isto é apenas uma forma de mostrar a utilização desta ferramenta fantástica chamada docker. “I love You Docker”.

github de um exemplo mais completo: “mauroslucios/restapi-nodejs”

Até a próxima!

Mauro Lúcio Pereira da Silva

Ciência e Tecnologia
Comentários

Artigos de mauro pereira

Ver blog
há 2 anos · 1 min. de leitura

Hoje iremos criar um simples container docker com Apache “Tomcat/10.0.23” de maneira rápida e com po ...

há 2 anos · 1 min. de leitura

No Console do AWS, Acesse o RDS Management Console · No painel de navegação esquerdo, clique em Data ...

Profissionais relacionados

Você pode estar interessado nestes trabalhos


  • Innolevels São Paulo, São Paulo, Brazil

    Desenvolvedor Fullstack · Estamos buscando um profissional talentoso para atuar em nosso time de tecnologia. O candidato ideal é aquele que tem experiência em desenvolvimento fullstack, com habilidades em React, Nodejs, Jest, Restify ou similar e API Rest. · Familiaridade com met ...

  • NetVagas

    Tech lead

    há 1 semana


    NetVagas São Paulo, São Paulo, Brazil

    Descrição do Cargo · O nosso sistema de recrutamento busca profissionais experientes para ocupar o cargo de Engenheiro de Software, responsável por liderar e gerenciar a equipe de desenvolvimento. · Responsabilidades · Liderar a equipe de desenvolvimento e garantir a entrega de p ...


  • beBeeCareers Araras, SP

    Vagas de desenvolvimento em NodeJS, bancos de dados relacional e não relacional são oportunidades para profissionais motivados. · Cadastre-se se você é um especialista em desenvolvimento de sistemas com experiência em linguagens como NodeJS, banco de dados relacional e não relac ...