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!
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.
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)
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
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.
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
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.
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. ??
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!
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".
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!
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 . .
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.
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ê!
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
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.
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 :)
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.
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
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.
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 ?
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?
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
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?
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
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.
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 :)
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.
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ó.
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?
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
@@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?
@@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
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 "../".
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!
Melhor tutorial de docker que eu assisti até hoje.
🤩 valeu Luis!
Cara muitooo obrigado 20:20, por esse trecho e essa explicação senssacional, é um bug que venho tentando resolver a 3 semanas. Muitoooo obrigado!
boooa! Que bom que ajudou 🚀
vídeo bom demais, faz mais vídeos assim, explicação muito bem feito, show de bola
Faremos! Obrigado!! 👊
Você não faz ideia do quão esclarecedor foi esse vídeo. Cara, excelente! Obrigado, mesmo. Vou maratonar o canal. Haha!
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.
🤩 Que massa que você curtiu cara, e MUITO obrigado pelo comentário, isso me motiva a continuar fazendo mais vídeos como esse! 👊
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)
Fala Ewerton! O docker é utilizado pra tudo. Ele encapsula todo o ambiente, deixando mais simples a implantação de qualquer tipo de aplicação.
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
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.
Fazer dessa forma ainda é ok ou mudou muito de 2020 pra cá?
obrigada, deu uns problemas com o makefile mas rodei docker-compose mesmo
👊
Explicação muito boa, parabéns
Valeu! 👊
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
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 :)
Parabéns Brunão!! Melhorou bastante a qualidade dos vídeos e os conteúdos sempre top!! Parabéns!! Abs!!
Ae!!! A intenção é melhorar mais ainda! Haha Valeu Parucker!
Muito bom!!!! Excelente trabalho
Muito obridado é exatamete o que eu procurava contiua com o bom trabalho.
fiquei fã de docker, excelente explicação.
Nossa, me salvou. Parabéns pelo conteúdo.
Que bom que ajudou🙏
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.
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.
??
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!
Boa! Anotei sua sugestão e vou pensar em como fazer, obrigado!
Muito bom video.. podia falar também sobre utilizar o kubernates e como fazer algo escalável talvez com microserviços...
Boa, k8s tá na lista pros próximos videos!!!
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".
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!
Cara, que aula!
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 . .
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.
obrigado!!! estou ansioso para o vídeo do kubernetes, parabéns pelo trabalho.
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ê!
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
@@CodarMe Show! Valeu pela resposta!
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.
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 :)
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.
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
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.
Instala o ubuntu! kkk, brincadeira. Acho que o wsl2 é linux, né? Se for, é igual.
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 ?
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 :)
@@CodarMe Da permissão negada quando tento acessar, vou ver algo pra estudar referente a fazer fora da api a migration, muito obrigado !
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?
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
@@CodarMe ah show de bola, compreendi. Vc teria alguma alternativa pra conexão com o banco, local e com o pm2?
Pior que eu faço exatamente como vc perguntou haha. Eu sempre subo o banco local sozinho, e rodo o yarn dev
@@CodarMe se qualquer maneira, obrigado por responder e parabéns pelos vídeos, são excelentes.
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?
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
Show! Obrigado por compartilhar!!!!
muito bom o video, poderia me informa o nome do tema do vscode ?
O tema é o Lucy github.com/juliettepretot/lucy-vscode-theme/
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.
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 :)
Oque devreciso estudar pra aprender essas tecnologias?
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
@@CodarMe obrigado..
Dica incrível!!!! Parabéns pelo vídeo!!!
MUITO OBRIGADO CARA
👊
Muito bom cara, agora estou consegui entender direitinho
Com o docker compose, não é mais preciso utilizar o Dockerfile ?
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.
Qual seria a configuração para um ambiente de produção com 2 réplicas?
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ó.
@@CodarMe obrigado pela resposta.
Fantástico vídeo! parabéns!
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?
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
@@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?
@@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
Parabéns, conteúdo muito bom!
Onde adiciono minha "npm install" ?
dá pra colocar no package.json, no script de "prestart". Assim quando rodar o start ele garante que instala as dependências antes
@@CodarMe Ok, it's correct put command: bash -c "npm install && yarn start" in file docker-compose.yml ?
@@juanortiz5190 I don't see any problems, but I still prefer to use it in the prestart script :D
@@CodarMe mas preciso rodar o yarn start e o prestart roda automaticamente antes, ou devo rodar o yarn prestart e depois yarn start?
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 :)
Cara, maravilhoso seu vídeo! Ganhou um inscrito.
🎉🎉🎉
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 "../".
Fala Lucas! Manda lá na comunidade com os teu arquivo do docker compose codar.me/discord
Excelente
Ótimo video! Qual é o tema do seu VS Code?
Lucy github.com/juliettepretot/lucy-vscode-theme
MONGO_INITDB_DATABASE not create init database
You're right! This var only defines the name of the database to be used by your application
@@CodarMe thanks for the anwser. Você está fazendo um bom trabalho.