Criando um ambiente de API com NodeJs + MongoDB utilizando Docker e Docker compose

Поделиться
HTML-код
  • Опубликовано: 4 ноя 2024

Комментарии • 104

  • @rafaelgpontes
    @rafaelgpontes 3 года назад +7

    Cara, este é um dos melhores vídeos de setup de banco com docker que eu já vi na vida! Extremamente didático e você realmente fala sobre vários pontos de segurança que muita gente omite! PARABÉNS! É impressionante que este vídeo esteja disponível gratuitamente para nós. +1 Inscrito!

  • @luisdomiciano
    @luisdomiciano 2 года назад

    Melhor tutorial de docker que eu assisti até hoje.

    • @CodarMe
      @CodarMe  2 года назад +1

      🤩 valeu Luis!

  • @leoazevedo-dev
    @leoazevedo-dev Год назад

    Cara muitooo obrigado 20:20, por esse trecho e essa explicação senssacional, é um bug que venho tentando resolver a 3 semanas. Muitoooo obrigado!

    • @CodarMe
      @CodarMe  Год назад

      boooa! Que bom que ajudou 🚀

  • @gabrielpadilh4
    @gabrielpadilh4 3 года назад +1

    vídeo bom demais, faz mais vídeos assim, explicação muito bem feito, show de bola

    • @CodarMe
      @CodarMe  3 года назад

      Faremos! Obrigado!! 👊

  • @viniciusneto6824
    @viniciusneto6824 4 года назад +1

    Você não faz ideia do quão esclarecedor foi esse vídeo. Cara, excelente! Obrigado, mesmo. Vou maratonar o canal. Haha!

  • @Souumzumbi
    @Souumzumbi 2 года назад

    Parabéns pelo vídeo e pela ótima didática. Já cansei de procurar vídeos a esse respeito, mas a maioria sempre diz o que você precisa fazer, mas não diz o motivo disso. Aula boa é assim, quando é explicado o motivo e o que determinado recurso faz e não apenas mandar seguir o passo a passo como se fosse um manual de receitas.

    • @CodarMe
      @CodarMe  2 года назад

      🤩 Que massa que você curtiu cara, e MUITO obrigado pelo comentário, isso me motiva a continuar fazendo mais vídeos como esse! 👊

  • @filodox21
    @filodox21 3 года назад

    Parabens ao teu excelente trabalho.Pelo que entendi docker é bom pra utilizar com banco de dados pra comunicação, mas há também pessoas que usam ele pra tudo(linguagem,banco de dados, api,etc)

    • @CodarMe
      @CodarMe  3 года назад

      Fala Ewerton! O docker é utilizado pra tudo. Ele encapsula todo o ambiente, deixando mais simples a implantação de qualquer tipo de aplicação.

  • @ramonsobreira2661
    @ramonsobreira2661 4 года назад

    Boa mano, salvou mais uma vida aqui kkkk, cheguei em um trabalho novo e eles usam docker, nunca tive experiência com isso, mas esse vídeo me explicou bem pra conseguir os primeiros passos, obg

  • @Manudoido100
    @Manudoido100 4 года назад

    Cara, muito obrigado pelo vídeo, eu estava tentando aprender o processo para utilizar em uma API com NodeJs + PostgreSQL. E seu conteúdo está tão bom que ainda assim foi útil para mim. Ganhou mais um inscrito.

  • @ivanferreira9593
    @ivanferreira9593 2 месяца назад

    Fazer dessa forma ainda é ok ou mudou muito de 2020 pra cá?

  • @evillynoliveira5982
    @evillynoliveira5982 2 года назад

    obrigada, deu uns problemas com o makefile mas rodei docker-compose mesmo

  • @brcronos20
    @brcronos20 2 года назад

    Explicação muito boa, parabéns

    • @CodarMe
      @CodarMe  2 года назад +1

      Valeu! 👊

  • @HumbertoBarbosaMS
    @HumbertoBarbosaMS 4 года назад

    Cara, tive um insight aqui la no meu trabalho tem um container que de tempos em tempos fica com mais de 8gb de tamanho eu não tinha ideia do porque.. agora percebi que é os logs, isso que você fez de dar include do arquivo .env no Makefile isso eu não sabia, muito bom vlw

    • @CodarMe
      @CodarMe  4 года назад

      Agora o docker-compose tmb pega o .env, então nas versões mais recentes, para o docker compose não precisamos mais do makefile :)

  • @paruckerr
    @paruckerr 4 года назад

    Parabéns Brunão!! Melhorou bastante a qualidade dos vídeos e os conteúdos sempre top!! Parabéns!! Abs!!

    • @CodarMe
      @CodarMe  4 года назад

      Ae!!! A intenção é melhorar mais ainda! Haha Valeu Parucker!

  • @Jupiteriano
    @Jupiteriano 4 года назад +1

    Muito bom!!!! Excelente trabalho

  • @Nicasiomarques
    @Nicasiomarques 4 года назад

    Muito obridado é exatamete o que eu procurava contiua com o bom trabalho.

  • @elvesw
    @elvesw 3 года назад

    fiquei fã de docker, excelente explicação.

  • @eveban
    @eveban 3 года назад

    Nossa, me salvou. Parabéns pelo conteúdo.

    • @CodarMe
      @CodarMe  3 года назад

      Que bom que ajudou🙏

  • @pedroh.fonseca9753
    @pedroh.fonseca9753 4 года назад

    Muito bom o tuto, valeu demaiss!! Só tive um problema por aqui que não consegui resolver: no Makefile, apontei o include para uma subpaste, onde estava o .env, porém ao fazer o `make up`, consta que as variáveis não existem (exemplo: WARNING: The DB_PORT variable is not set. Defaulting to a blank string.).
    Alguém sabe o que pode ser? Tentei de todo jeito, mas não deu certo.
    Fiz um teste movendo o .env para o mesmo diretório do Makefile e funcionou, mas não pretendo deixá-los no mesmo diretório.

  • @rodneywenderribeiro1832
    @rodneywenderribeiro1832 Год назад

    Clonei o repositório da aula desse vídeo e não tô conseguindo conectar a api no container do mongo, tá dando um erro de sintaxe e o container do banco não tá conectando no mongodbcompass alguém sabe o que pode ser? O container do mongo e da api tá subindo normalmente.
    ??

  • @pedruchu259
    @pedruchu259 3 года назад

    Achei ótimo seu vídeo, fiquei procurando a semana toda um vídeo assim e você tem o melhor e mais explicativo, tem como fazer um vídeo falando sobre dB? eu tô querendo já subir o db com dados pra daí consegui retornar os valores como você tava fazendo e não tô conseguindo de jeito nenhum
    Desde já obrigado e sucesso!

    • @CodarMe
      @CodarMe  3 года назад +1

      Boa! Anotei sua sugestão e vou pensar em como fazer, obrigado!

  • @JogandocomFaria
    @JogandocomFaria 4 года назад +1

    Muito bom video.. podia falar também sobre utilizar o kubernates e como fazer algo escalável talvez com microserviços...

    • @CodarMe
      @CodarMe  4 года назад +1

      Boa, k8s tá na lista pros próximos videos!!!

  • @kimmdev
    @kimmdev 4 года назад

    Cara que tutorial sensacional, obrigado pelo conteúdo ensinado! Só me restou uma dúvida, mesmo fazendo todo o procedimento para escutar o host do mongo a conexão fica apenas assim "UnhandledPromiseRejectionWarning: MongooseServerSelectionError: connect ECONNREFUSED 192.168.64.2:27019".

    • @kimmdev
      @kimmdev 4 года назад +1

      Resolvi! Como eu queria que o mongo rodasse em outra porta fora da padrão 27017, então antes de instanciar a porta eu preciso liberar.
      ex:
      command: mongod --port ${DB_PORT}
      ports:
      - ${DB_PORT}:27017
      Abçs!

  • @mrjeter
    @mrjeter 3 года назад +1

    Cara, que aula!

  • @Mx3Tutors
    @Mx3Tutors 4 года назад

    Parabéns pelo video, por sua dica eu acabei olhando o video no qual você fala sobre docker file e docker compose, mas eu fiquei com a seguinte dúvida, como eu conseguiria fazer esses comandos no docker-compose? RUN mkdir -p /home/node/api/node_modules && chown -R node:node /home/node/api , RUN yarn , COPY --chown=node:node . .

    • @CodarMe
      @CodarMe  4 года назад +1

      Fala Gabriel! Obrigado!! Vamos lá: Sobre o RUN e COPY, no docker-compose tem command e volumes, respectivamente, pra substituir. Porém nesse seu caso especificamente, você não deveria criar uma pasta node_modules manualmente nem alterar permissões. O yarn install, você pode colocar em um script de prestart no package.json que resolve. De todo modo, o docker-compose não foi feito pra substituir o Dockerfile, o que eu tentei passar com o video, foi que na maioria dos casos você não precisa de Dockerfile, e assim consegue pular a etapa de build da imagem, o que agiliza seu processo. Então sempre que você tem configurações mais complexas, deve continuar usando Dockerfile.

    • @Mx3Tutors
      @Mx3Tutors 4 года назад

      obrigado!!! estou ansioso para o vídeo do kubernetes, parabéns pelo trabalho.

  • @gbarokebaroke4950
    @gbarokebaroke4950 4 года назад

    Aplicando a aula eu me deparei com a seguinte situação: Como eu ignoro a pasta node_modules? Percebi que após remover o Dockerfile, o docker-compose passou a subir todas as minhas pastas que estão no .dockerignore. Como ignorar diretórios e arquivos utilizando apenas o docker-compose? Uma segunda dúvida seria: Sempre que eu precisar executar algum comando do PM2, eu precisaria acessar o container da api e executar lá de dentro? Obrigado pela aula, tem ajudado bastante. Todo o sucesso a você!

    • @CodarMe
      @CodarMe  4 года назад +1

      Pra ignorar pastas, você precisa declarar um volume sem referência. Exemplo
      volumes:
      - .:/usr/src/app # aqui mandamos a pasta local toda pra dentro do container
      - /usr/src/app/node_modules # aqui criamos uma pasta lá dentro, sem referência externa.
      E sobre a segunda dúvida, você pode executar diretamente de fora, sem precisar entrar no container, usando o comando exec,
      docker exec -it nome_do_seu_container seu_comando, ex: docker exec -it api pm2 stat

    • @gbarokebaroke4950
      @gbarokebaroke4950 4 года назад

      @@CodarMe Show! Valeu pela resposta!

  • @dragondiego7
    @dragondiego7 4 года назад

    Cara muito bom o vídeo. Acho que faltou um pouco de clareza na explicação da criação do virtual host mas ficou claro no final. Uma coisa que queria ter visto é como vc faz a instalação do npm mas sem precisar rodar o docker-compose run que manda um comando para dentro do container. Queria ver, talvez até usando o makefile, eu executar um comando (make up), e ele já fazer a instalação dos pacotes e deixar o ambiente pronto para dev.

    • @CodarMe
      @CodarMe  4 года назад

      Eu não mostrei no video, mas eu geralmente faço um script no package: "prestart": "yarn". Assim, sempre que o docker-compose subir e rodar o "yarn start", ele vai instalar as dependencias antes :)

  • @heudersena
    @heudersena 3 года назад

    professor como seria! Minha maquina que desenvolvo está com o ip 192.168.1.108 e a maquina que está instalado o docker é um debian no ip 192.168.1.112 como que faz para enviar por exemplo uma api pra lá em node por exemplo.

    • @CodarMe
      @CodarMe  3 года назад

      Você precisa export uma porta. Quando você expõe a porta, seu serviço fica acessível, e ai é usar o IP (ou localhost) da sua máquina mais a porta que você expôs: localhost:9000 port exemplo

  • @TadeuCosta56
    @TadeuCosta56 4 года назад

    Parabéns pelas explicações, ganhou mais um inscrito. Devemos sempre colocar o node como último item do docker-compose (dependente do db)? E como faço para usar o make no ambiente windows. Configuração: WSL2.

    • @CodarMe
      @CodarMe  4 года назад

      Instala o ubuntu! kkk, brincadeira. Acho que o wsl2 é linux, né? Se for, é igual.

  • @rodrigoazevedo9100
    @rodrigoazevedo9100 4 года назад

    Sensacional amigo ! muito bom mesmo, parabéns pelo conteúdo, me surgiu somente uma duvida, caso eu queria rodar uma migration por exemplo, como acesso a bash do app para rodar um comando yarn ? seria possível ?

    • @CodarMe
      @CodarMe  4 года назад

      docker exec -it nome-do-container bash. Mas eu faria isso rodando outro container exclusivo pra migrations, ao invés de acessar o da api :)

    • @rodrigoazevedo9100
      @rodrigoazevedo9100 4 года назад

      @@CodarMe Da permissão negada quando tento acessar, vou ver algo pra estudar referente a fazer fora da api a migration, muito obrigado !

  • @mottamarcos
    @mottamarcos 4 года назад

    Bruno após vc alterar o .env (DB_HOST=db), se vc subir local (yarn dev), ele não conecta mais, e quando vc der o make up, ele sempre vai criar o container "api" de prod, correto? Como alterar, pra que localmente suba apenas o Mongo, e prod subir mono e a api?

    • @CodarMe
      @CodarMe  4 года назад +1

      ai o ideal seria que você rodasse só o container que vc quer passando o nome do serviço, assim: "docker-compose up db". Assim ele não sobe tudo que ta no docker-compose. Ou da pra jogar no makefile um "make db", e jogar esse comando dentro

    • @mottamarcos
      @mottamarcos 4 года назад

      @@CodarMe ah show de bola, compreendi. Vc teria alguma alternativa pra conexão com o banco, local e com o pm2?

    • @CodarMe
      @CodarMe  4 года назад +1

      Pior que eu faço exatamente como vc perguntou haha. Eu sempre subo o banco local sozinho, e rodo o yarn dev

    • @mottamarcos
      @mottamarcos 4 года назад

      @@CodarMe se qualquer maneira, obrigado por responder e parabéns pelos vídeos, são excelentes.

  • @raimundoluizo
    @raimundoluizo 4 года назад

    Muito bom, mais notei que toda vez que executo o "make up" ele cria um novo volume, desconsiderando os volume anteriores. Outra questão é se tiver que personalizar um Dockfile como proceder?

    • @CodarMe
      @CodarMe  4 года назад

      Isso, é o comportamento desejado, já que em teoria vc não vai fazer vários down/ups em produção. Pra usar sempre o mesmo volume, vc teria que criar o volume antes, e setar ele no compose com volumes external true, e criar um nome.
      Sobre o dockerfile, geralmente eu uso imagens base, e sempre altero o que eu preciso no próprio compose, ou em scritpts no start do container, senão, só usando dockerfile msm

  • @RicardoTrevisan
    @RicardoTrevisan 3 года назад

    Show! Obrigado por compartilhar!!!!

  • @SetupDeDev
    @SetupDeDev 4 года назад

    muito bom o video, poderia me informa o nome do tema do vscode ?

    • @CodarMe
      @CodarMe  4 года назад

      O tema é o Lucy github.com/juliettepretot/lucy-vscode-theme/

  • @Tamercuba93
    @Tamercuba93 4 года назад

    Curti o vídeo mas não entendo por que não rodar a api ( ou o worker, ou seja la o que você desenvolve ) também num container. Prefiro deixar tudo rodando isolado em containers.
    No meu caso costumo fazer make start e o docker compose ja sobe a api e todas as dependências.

    • @CodarMe
      @CodarMe  4 года назад +1

      Também rodo no container sim a API, mas pra desenvolvimento local, as vezes é mais rápido (e mais leve) rodar na própria máquina, e ai já mostrei como fazer :)

  • @Anderson_Rafaell77
    @Anderson_Rafaell77 3 года назад

    Oque devreciso estudar pra aprender essas tecnologias?

    • @CodarMe
      @CodarMe  3 года назад +1

      Fala Anderson! Se inscreve no curso gratuito que vamos dar no dia 24/08, vamos galar de algumas delas codar.me/full-stack-sem-custo

    • @Anderson_Rafaell77
      @Anderson_Rafaell77 3 года назад

      @@CodarMe obrigado..

  • @DiegoGarcia-ex7rj
    @DiegoGarcia-ex7rj 4 года назад

    Dica incrível!!!! Parabéns pelo vídeo!!!

  • @albuquerquedev5200
    @albuquerquedev5200 2 года назад

    MUITO OBRIGADO CARA

  • @mardesonpereira3194
    @mardesonpereira3194 3 года назад

    Muito bom cara, agora estou consegui entender direitinho

  • @leonardocamargo5412
    @leonardocamargo5412 4 года назад

    Com o docker compose, não é mais preciso utilizar o Dockerfile ?

    • @CodarMe
      @CodarMe  4 года назад +1

      São duas coisas diferentes. O que mostrei no video é que na maioria dos casos, o Dockerfile não é necessário pq o que a galera escreve nele, da pra fazer via docker compose. Mas quando você precisa customizar uma imagem, não tem como fugir do Dockerfile.

  • @juanortiz5190
    @juanortiz5190 4 года назад

    Qual seria a configuração para um ambiente de produção com 2 réplicas?

    • @CodarMe
      @CodarMe  4 года назад

      Em teoria, falando de docker-compose, o mesmo. Pois quem vai configurar e gerenciar a replica, é o próprio mongo, enquanto sua API continua apontando pra um lugar só.

    • @juanortiz5190
      @juanortiz5190 4 года назад

      @@CodarMe obrigado pela resposta.

  • @leonardocamargo5412
    @leonardocamargo5412 4 года назад

    Fantástico vídeo! parabéns!

  • @viictorceesar
    @viictorceesar 4 года назад +1

    Caraca a explicação ficou excelente mano, era exatamente oque eu estava procurando, tenho certeza que agora consigo fazer sozinho vlw dms mano.
    Eu só tenho uma pergunta. Se vc tem a opção de colocar env_file no docker-compose.yml pq vc ainda usa o Makefile?

    • @CodarMe
      @CodarMe  4 года назад +2

      São duas coisas diferentes: Uma é usar o env_file, que vai fazer com que o seu container tenha as variáveis dentro dele, quando ele estiver rodando. Outra, é usar as variáveis de ambiente no docker-compose.yml, aquelas ali de senha do banco, por exemplo. Ali só funciona se essas variáveis estiverem na sua máquina, pq quando vc roda o compose up, ele vai pegar da sua máquina, por isso o makefile. Porém, versões mais recentes do docker compose já pegam direto o .env que esta na mesma pasta do yml, então não seria mais necessário o makefile pra esse fim

    • @kimmdev
      @kimmdev 3 года назад

      @@CodarMe Eu achei interessante o uso do makefile devido ao comandos que facilitam na hora de instanciar os containers, mas o sobre a env no "makefile" não é mais necessário o (include .env) no topo do arquivo?

    • @CodarMe
      @CodarMe  3 года назад

      @@kimmdev Pro makefile sim, é necessário, porém, o comando que estamos rodando ali é docker-compose, e o proprio compose usa o .env, entao nesse caso, nao é necessário

  • @adelinopds
    @adelinopds 4 года назад

    Parabéns, conteúdo muito bom!

  • @juanortiz5190
    @juanortiz5190 4 года назад +1

    Onde adiciono minha "npm install" ?

    • @CodarMe
      @CodarMe  4 года назад +1

      dá pra colocar no package.json, no script de "prestart". Assim quando rodar o start ele garante que instala as dependências antes

    • @juanortiz5190
      @juanortiz5190 4 года назад

      @@CodarMe Ok, it's correct put command: bash -c "npm install && yarn start" in file docker-compose.yml ?

    • @CodarMe
      @CodarMe  4 года назад

      @@juanortiz5190 I don't see any problems, but I still prefer to use it in the prestart script :D

    • @mottamarcos
      @mottamarcos 4 года назад

      @@CodarMe mas preciso rodar o yarn start e o prestart roda automaticamente antes, ou devo rodar o yarn prestart e depois yarn start?

    • @CodarMe
      @CodarMe  4 года назад +1

      O prestart roda automaticamente. Na verdade qualquer comando que vc roda, procura por um comando com pre e roda antes, e um com post e roda depois :)

  • @tuliomf09able
    @tuliomf09able 4 года назад

    Cara, maravilhoso seu vídeo! Ganhou um inscrito.

    • @CodarMe
      @CodarMe  4 года назад

      🎉🎉🎉

  • @canallucasrocha
    @canallucasrocha Год назад

    fala amigo, bom dia.
    estou montado uma loja virtual, criei o contêiner do mongodb, e está conectado e realizando fazendo consulta, mais quando tento rodar no front, ocorre um erro, pode me ajudar?!
    logo do erro:
    Failed to resolve module specifier "mongodb". Relative references must start with either "/", "./", or "../".

    • @CodarMe
      @CodarMe  Год назад

      Fala Lucas! Manda lá na comunidade com os teu arquivo do docker compose codar.me/discord

  • @henriquedetoni1433
    @henriquedetoni1433 4 года назад

    Excelente

  • @jucelinofilho9404
    @jucelinofilho9404 4 года назад

    Ótimo video! Qual é o tema do seu VS Code?

    • @CodarMe
      @CodarMe  4 года назад

      Lucy github.com/juliettepretot/lucy-vscode-theme

  • @juanortiz5190
    @juanortiz5190 4 года назад

    MONGO_INITDB_DATABASE not create init database

    • @CodarMe
      @CodarMe  4 года назад

      You're right! This var only defines the name of the database to be used by your application

    • @juanortiz5190
      @juanortiz5190 4 года назад

      @@CodarMe thanks for the anwser. Você está fazendo um bom trabalho.