Unknown

0 views11929 WordsCopy TextShare
Unknown
Video Transcript:
muito boa noite muito boa noite galera firme e forte com vocês todo mundo me ouvindo tudo tranquilo aí com vocês hoje vai ser o dia onde a gente vai falar bastante de docker galera né Eu acho que vai ter bastante aí conteúdo que vocês vão curtir bastante galera show e galera para que a gente possa começar bem aqui né esse nosso bate-papo de hoje somente para você saber Prim em que a gente tá no meio da imersão full stack full cycle né esse aqui é o Esquenta da imersão o que que isso significa que na
semana que vem a gente vai publicar os conteúdos né a gente tá desenvolvendo um projeto prático um home broker utilizando microsserviços diversas tecnologias como go nestjs apach CFC a gente tá usando nextjs tem muita coisa bacana durante todo o processo né e esse nosso esquenta ele serve exatamente para balizar essa imersão para que na semana que vem quando a gente Comece a subir os projetos passo a passo todos os dias a gente vai ter um vídeo você vai poder aí acompanhar melhor porque muitos dos pré-requisitos né do que a gente vai utilizar nessa imersão eles
vão partir a através né Desse dessas lives que a gente tá fazendo durante essa semana tá Então essa aqui é a grande pegada pessoal e pra que a gente possa começar tá eu queria primeiro perguntar aí quem aqui é novato ou novata aqui no canal primeira vez que tá acompanhando uma live com a gente ainda não teve muito acesso aos nossos conteúdos tá conhecendo a gente aqui da fusy pela primeira vez Coloca aí #nato ou # novata galera aí ó uma galera colocando aí novato ou novata show de bola Maravilha e também né a gente
sempre tem pessoas aí que no final das contas estão nos acompanhando né Já faz um bom tempo né E aí nesse caso a gente chama de veterano ou veterana então queria saber aí de vocês né quem aí é veterano ou veterana a aí galera e eu acho que eu tenho que ajustar o meu áudio aqui né Eu acho que tava parecendo meio que dessincronizado vocês estão conseguindo me ouvir normalmente agora veja me ouvem por favor deixem-me saber somente para colocar é tá dizendo que a minha câmera tem gente falando que a minha câmera não tá
no syn e mas a gente tenta contornar isso aqui durante a Live tá galera Maravilha Então pessoal temos bastante gente nova bastante gente chegando aqui mas ah um ponto importante né inclusive para eu conseguir dimensionar melhor quem aqui especificamente já trabalhou com docker galera por favor deixem me saber quem aqui em algum momento já trabalhou com docker aí na vida né Isso aí é importantíssimo eu saber porque baseado nisso vai ser como eu vou organizar inclusive todo o conteúdo do nosso bate papo tá aí ó tem gente que nunca tem gente já falar que trabalha
com o docker maravilha aqui ó o Daniel falando que sabe o basicão trabalho mais com supervisão de Senior mas eu eu queria entender o que que é trabalhar com mais supervisão de Senior mas tem gente que administra cluster kubernetes show de bola galera pessoal então o seguinte tá Ah eu quero trazer aqui para vocês a a ideia Desse nosso bate-papo aqui hoje tá Então primeiramente tá para quem não me conhece para quem não conhece aí a full cycle tá nós somos uma escola de tecnologia né Nós temos uma faculdade também a faculdade full cych de
tecnologia a gente já tá no mercado aí faz um bom tempo nessa área de educação o Nosso principal Foco hoje aqui na full cycle é conseguir acompanhar desenvolvedores em diversos momentos aí na carreira dele né e grande parte dos desenvolvedores que estudam com a gente já são desenvolvedores que já trabalham na área ou seja já sabem programar né já já começou a consolidar aí uma carreira tá então ah somente pra gente conseguir alinhar as expectativas galera ah tudo que a gente tá trazendo aqui a gente já parte do princípio que você já sabe programar que
você já conhece uma linguagem de programação que você já trabalha com banco de dados e coisas desse tipo tá então é muito importante a gente alinhar essa expectativas tanto que a própria imersão ela é recomendada aí com pessoas que tenham pelo menos aí 2 anos de experiência né a gente tenta ao máximo deixar isso transparente em todos os locais das nossas comunicações para evitar também com que alguém que não tem esse nível de experiência participe e acabe se frustrando Porque possa boiar um pouquinho aí nos conteúdos e obviamente se você não tem tanta experiência Você
tá mais do que convidado aí a participar da Live com a gente mas partindo do princípio que eu sempre vou seguir da ideia que né para quem já sabe programar né eu vou partir do princípio vão ter alguns requisitos aqui que eu já vou trabalhar e vou partir do princípio que a galera já sabe trabalhar Beleza então é importante a gente alinhar essas expectativas aí com todo mundo tá Ah o lance é o seguinte tá Ah eu tava pensando muito no nome dessa Live né e o que que eu iria trazer aqui para vocês tá
então a nossa ideia é a gente ter um desafio muito Claro hoje do que a gente vai aprender com docker do que vocês vão poder ver com o docker na prática e o nosso objetivo é matar isso aí a partir do momento que eu abri o meu vest co aqui a gente matar isso em uma hora tá Ou seja é docker em uma hora para que você tenha uma visão Geral do docker tá lembrando tá que obviamente esse não vai ser um curso completo de docker A full cycle tem cursos focados muito em contêiners em
diversos níveis e tudo mais depois se você quiser dar uma olhada entra no nosso site conhece aí o curso full cycle onde ele tem uma área só de contêiners Tá mas o nosso ponto aqui hoje é nivelamento então então o nosso objetivo principal é fazer com que você entenda a ideia principal do que tá do que está por trás do docker E como que o docker ele vai poder te ajudar no dia aí com o desenvolvimento beleza fechou galera então vamos fazer o seguinte Tá eu vou compartilhar aqui a tela do meu computador a única
coisa que eu vou ter que fazer tá Ah é jogar esse meu meu chat essa minha tela aqui para cá para que eu consiga acompanhar o chat durante o nosso bate-papo tá que daí eu consigo ver o que vocês estão falando e tudo mais deixa eu ajustar meus detalhezinhos de microfone e a gente vai nessa pegada agora aqui então deixa eu compartilhar minha tela e aí a gente começa aí firme e forte Então vamos lá entire screen e eu vou compartilhar essa minha tela aqui Show Ah obviamente eu vou aumentar o zoom aqui para vocês
Tá mas primeira coisa que eu vou fazer rapidamente Então galera Ó contando a partir de agora uma hora vamos ver se a gente consegue Batu uma hora Tá então vamos lá galera passo Inicial tá é importante vocês entenderem uma coisa docker é uma tecnologia e docker Ink é uma empresa né que criou essa tecnologia docker tá então quando você acessa docker.com você Tá acessando o site da empresa que mantém o docker o docker ele é um projeto open source mas a docker tem diversos produtos para facilitar a vida do desenvolvedor Eu recomendo de cara sempre
tá que você instale o docker desktop no seu computador a gente tem diversos vídeos aqui no nosso canal do YouTube onde você pode ver passo a passo de como instalar o docker no seu computador basicamente você baixa o docker desktop instala pro seu sistema operacional única coisa que eu recomendo aí no caso é que se você utiliza o Windows tá Eu recomendo que você faça a instalação do docker utilizando o Ah o wsl2 tá Para que o docker ele tenha uma integração o docker desktop ele tem uma integração muito melhor aí com Windows Deixando as
coisas muito mais fáceis Tá mas de forma geral o nosso principal ponto aqui não é ensinar instalar as coisas tá galera isso aí Vocês conseguem ver com calma o importante de tudo é a gente entender os conceitos principais que estão aí por trás do docker tá então a a ideia principal é o seguinte pessoal ah por muito muito tempo a gente sempre teve problemas de na minha máquina funciona a gente sempre teve problemas de quando eu desenvolvia algo no meu computador em produção dava problema eu não conseguia garantir esse nível de homogeneidade no meu sistema
no meu processo de desenvolvimento e no meu processo de produção Eu lembro que muitas vezes Ah um funcionário ia começar a trabalhar na empresa ele demorava uma semana para fazer o setup da máquina dele porque tinha que instalar todos os frameworks todas as bibliotecas tinha que instalar não sei o quê instalar não sei o quê e o docker no final das contas ele veio facilitar porque ele cria vamos dizer assim ah um processo de desenvolvimento Onde você consegue garantir que todo mundo tá programando no mesmo ambiente tá uma coisa que é muito comum das pessoas
perguntarem é qual que é a diferença de docker e e máquina virtual tá então eu vou passar rapidinho eu sempre mostro essa imagem aqui para vocês mas se você olhar essas duas imagens eu acredito que todo mundo já ouviu falar em virtual Machine ou VM né máquinas virtuais e a ideia da máquina virtual aqui é o seguinte eu tenho né uma camada de virtualização e eu instalo diversos sistemas operacionais dentro do sistema operacional principal né E daí dentro de cada sistema operacional né de cada máquina virtual eu instalo as minhas aplicações para rodar o grande
problema nesse caso é que eu tenho que instalar um sistema operacional completo eu tenho que ter mais memória eu tenho que ter mais CPU né eu tenho que manter esse sistema operacional atualizado e todas as vezes que eu preciso escalar isso eu vou ter que sair novas criando novas e novas máquinas virtuais tá quando a gente tá falando em contêiners né que é o que o docker faz ele faz o seguinte no final das contas o docker ele tem uma camada tá de comunicação com o sistema operacional então cada aplicação dessa aqui que a gente
tá colocando ela funciona dentro de um contêiner que no final das contas é um processo isolado no seu sistema operacional que acaba rodando E todas as vezes que o seu contêiner está rodando ele pensa que ele é um sistema operacional né Ele é enganado que ele é um sistema operacional mas a verdade é que ele é um simples processo gerenciado aí pelo runtime do docker então no final das contas o que que acaba acontecendo é que como isso é um processo basta eu dar um start e o negócio já tá rodando eu não preciso nem
espar esperar fazer o boot da máquina como eu só vou rodar essa aplicação o meu contêiner ele vai ficar extremamente leve né Às vezes até com megas né de tamanho ao invés de gigas que é o que acontece normalmente com máquinas virtuais e a grande sacada é que se eu tenho um contêiner com essa aplicação rodando e você rodar no seu computador no computador do seu colega de trabalho no servidor em produção o comp ento desse cara vai ser o mesmo pelo fato deles usarem tudo igual desde a versão do Canon até as bibliotecas porque
tudo isso fica vamos dizer compilado vamos dizer dentro do contêiner fica especificado claramente tudo que esse contêiner ele tem que rodar então essa que é a grande pegada aí que vocês precisam ah entender de forma geral tá então A ideia é que os contêiners eles gerem eles são mais leves mais simples você não precisa ficar instalando um monte de máquina virtual você pode derrubar um contêiner criar um novo contêiner mudar isso em tempo de execução e você não vai ter problema nenhum aqui para você conseguir trabalhar Beleza então seguinte pessoal um ponto importante aqui quando
a gente tá falando de containers ah basicamente é como que a gente começa a desenvolver com esse cara aqui tá então primeira coisa que você pode fazer de forma geral tá Ah e eu recomendo sempre dê uma olhada aí no seu caso com docker desktop aqui por exemplo eu tenho um contêiner rodando aqui de um rate limiter que eu tava desenvolvendo vou até matar esse contêiner ó então tô dando um deletar aqui e a minha aplicação aqui de forma geral o que que vai acontecer ela vai ficar Ah sem nada rodando tá é até importante
eu trazer isso aqui para vocês Opa deixa eu colocar aumentar esse cara aqui n então ó deixa eu voltar aqui no docker desktop eu não tenho nada rodando de contêiners aqui para mim tá agora uma coisa interessante é que na hora que eu vou rodar um contêiner deixa eu abrir aqui o meu vs code o docker ele tem alguns comandinho bem básicos para você entender como que ele funciona tá um dos Comandos iniciais que normalmente todo mundo digita é né docker Run hello world tá e o que que isso significa no final da das contas
ele vai colocar um texto aqui pra gente mas na realidade tudo que aconteceu aqui foi algo muito maior do que um simples texto por incrível que pareça quando eu dei um docker Run né ele pegou né uma imagem que fica guardado num repositório de imagens ele é chamado de docker Hub nesse caso depois eu posso eu vou mostrar para vocês o docker Hub e ele fez o download dessa imagem é que essa imagem já tava como cche no meu computador e esse contêiner ele apenas dava um print e daí ele trouxe essa mensagem aqui para
mim tá agora uma coisa interessante que você tem que entender é que quando eu tô rodando um contêiner Eu Posso rodar contêiners de diversas formas Eu Posso rodar um contêiner Ah para manter um processo rodando e o contêiner ele fica sempre em execução por exemplo esse contêiner né que eu acabei de executar ó é docker Run hello world Se eu olhar aqui ó vou dar um comando chamado docker PS o docker PS ele traz todos os contêiners que eu tenho mas somente o PS ele traz todos os contêiners que eu tenho e que estão em
execução agora olha só que interessante se eu dar um docker PS Men A ele vai trazer aqui ó deixa até diminuir a fonte para ficar melhor para você ver ah ele tem um id de um contêiner que a imagem dele é o hello world o comando que ele execut executou foi Hello né ele foi criado e ele saiu por que saiu porque quando esse comando rodou ele executou e acabou esse comando Então esse contêiner não Ficou rodando o ponto importante que eu quero que você entenda é que toda vez que eu vou criar um contêiner
eu vou sempre criar um contêiner a partir de uma imagem que já existe e Sim nós também podemos criar as nossas imagens imagine uma imagem como um SnapShot algo pronto que você já pode sair utilizando no dia um então eu vou dar um exemplo aqui para vocês conseguirem entender vamos imaginar que eu estou precisando rodar um Web Server na minha máquina tá quem aqui conhece algum Web Server n algum sistema de Web Server aqui tem um bem conhecido que ele é chamado de engex quem já ouviu falar no engex aqui galera então o lance é
seguinte tá Ah se eu dar um docker Run engex aqui pra frente o que que vai acontecer ele vai buscar uma imagem chamada engex lá no dockerhub tá se eu acessar aqui ó depois vou até abrir aqui ó Hub P hub.docker.com aqui é o local onde você busca tudo conté imagens docker que estão tem prontas aqui pra gente por exemplo emex tá aqui ó o nome da imagem que a gente tá buscando eu consigo escolher pelas versões pelo sistema operacional mas eu vou apenas rodar docker Run Engine x lembre-se Sempre quando você tá rodando o
comando Run é porque você tá querendo criar um novo coner tá então se eu der um enter agora aqui o que que vai acontecer ele iniciou o processo de um engex ou seja o engex já está rodando aqui no meu computador agora A grande questão aqui que não quer calar é a seguinte né como que eu sei que o engex tá rodando qual porta o engex roda então eu vou abrir um novo terminal aqui e eu vou fazer aquele mesmo comando docker PS para eu listar os meus contêiners e agora você vai perceber aqui que
eu tenho o ID do contêiner o nome da imagem que tá sendo utilizada o comando que foi executado para rodar o contêiner e se você perceber esse comando continuou sendo executado tanto que o status desse contêiner tá que ele está ou seja o contêiner está em execução diferente daquele hello world que não estava em execução e aqui ele documenta pra gente a porta que o engex tá rodando que é a porta 80 tá agora a pergunta que não quer calar é se eu rodar na minha máquina aqui a porta 80 tentar fazer algo um Curl
htp do pontos barra barra local host o que que vai acontecer eu consigo acessar o engex Nesse momento fazendo isso já que o contêiner do nginx tá rodando na minha máquina então eu vou rodar aqui e você vai perceber que não funcionou E por que que não funcionou galera Ele simplesmente não funcionou por um único motivo o engex ele está rodando dentro do contêiner e fica ficando disponível dentro da porta 80 do contêiner a pergunta que eu queria fazer para você aqui é eu estou dentro do contêiner eu não tô dentro do contêiner tá eu
estou na minha máquina o contêiner tá sendo executado Então nesse momento O que que eu posso fazer para eu tentar acessar esse ginex eu posso tentar logar dentro desse contêiner e ver se eu consigo executar alguma coisa como que eu posso fazer isso eu vou dar um docker eec menos it para rodar de forma interativa vou passar o nome do contêiner pode ser esse nome esquisito que ele deu ou pode ser o ID do contêiner eu vou colocar o id e vou colocar aqui Bash e se você olhar agora perceba agora que eu estou como
root dentro do meu contêiner tá então se eu der um LS agora você vai ver que eu já não estou mais na minha máquina Se eu der um name Men A você vai ver que eu estou dentro de uma máquina Linux aqui rodando para mim tá E isso aqui significa que eu estou dentro daquele contêiner que está executando o engex então se eu der por exemplo um Curl local host agora aqui para mim olha só o que eu acabo recebendo eu acabo recebendo o conteúdo do nginx aqui para mim o mais interessante é que se
eu tentar editar esse conteúdo eu consigo deixa eu ver se ele tem vin não tem né APT update APT install vinos Y olha só o que eu vou fazer eu vou entrar numa pasta user share engex HTML Aqui é onde fica os arquivos HTML do engex eu vou editar aqui o meu index P html eu vou colocar Welcome to full cycle Vou salvar vou rodar aquele meu Curl novamente e olha só o que que vai aparecer aqui para mim Welcome to full cy tá então se você perceber eu dentro do contêiner consigo executar o que
está acontecendo dentro dele nesse caso o engex que tá ativo mas mas A grande questão é que não faz muito sentido toda hora a gente ter que ficar entrando no contêiner para poder executar o Web Server né no dia a dia o que que acontece eu o que eu mais preciso é trabalhar local na minha máquina como desenvolvimento que que eu posso fazer aí nesse caso caso eu queira visualizar o conteúdo do contêiner eu vou fazer o seguinte primeiramente eu vou dar um docker PS vou pedir para ele remover esse contêiner docker RM - f
e vou remover esse contêiner agora eu vou dar de novo um docker Run em gex para ele rodar mas aqui eu vou publicar uma porta então vou falar aqui toda vez que eu acessar esse cara na minha porta 80 80 do meu computador ele vai apontar paraa porta 80 do contêiner o que que isso significa ele tá fazendo um bind aqui ou seja ele tá criando uma porta de comunicação no meu computador para acessar uma porta do contêiner Então significa que se eu rodar isso agora e agora sim eu rodar um Curl local host Opa
era para funcionar vamos a local host né 2.880 aí agora eu consigo acessar aquele meu conteúdo tá basicamente Se eu colocar local host 2.880 eu vou ter acesso aqui ó ao Welcome to engex do contêiner que a gente tá trabalhando tá esse aí é o grande ponto pessoal um único comando e fique tranquilo em relação a decorar comandos porque a gente na prática no dia a dia a gente trabalha de um jeito ainda mais fácil tá a grande sacada aqui pra gente é com um comando eu consigo colocar um Web Server para rodar tá E
lembrando sempre pessoal tudo isso ISS S consegue rodar porque eu estou trabalhando baseado em uma imagem que já existe mas eu posso customizar uma imagem da forma como eu quiser agora A grande questão aqui é como que eu poderia por exemplo facilitar a minha vida para que eu não tenha que sair dando um monte de comando Ah no dia a dia e antes disso houve uma pergunta aqui Interessante não era para est escrito Welcome to to full cycle Essa é a grande Pergunta galera um contêiner ele é baseado em imagens e as imagens São imutáveis
então quando eu criei aquele contêiner com Engine x tá e mudei para full cycle logo em seguida eu removi aquele contêiner quando eu criei esse novo contêiner expondo a porta ele vai se basear na imagem original do nginx que não tá escrito Welcome full cycle o que que significa que aquela alteração que a gente fez foi perdida lembre-se o contêiner Ele trabalha com imagens essas imagens Elas têm estado ou seja elas são um SnapShot Se eu quisesse fazer com que o welcom full pych ficasse nesse contêiner eu teria que gerar uma outra imagem baseada naquele
contêiner onde eu tivesse aquele conteúdo Inicial Mas fique sado que a gente vai a aender a fazer isso hoje aqui também tá então a grande sacada aqui que a gente tem que perceber é o seguinte eu posso trabalhar de diversas formas para facilitar minha vida ah para criar os meus contêiners tá Existem muitos comandos tá pessoal muitos comandos mesmoos do docker mas no dia a dia como eu vou dar vamos dizer assim esse nosso bate-papo em uma hora para você a minha ideia é tentar trazer mais e mais o mundo real do que você vai
encontrar no dia a dia nos seus projetos tá então o que que você vai encontrar normalmente nos seus projetos normalmente você vai encontrar um arquivo que a gente chama de docker compose.co o que que ele é ele utiliza um recurso chamado compos do docker e esse recurso Ele permite que de uma forma declarativa a gente escolha quais dos contêiners dos serviços que a gente quer executar eu vou dar um exemplo bem simples eu vou falar Services aqui para mim e eu vou falar que eu vou ter um serviço chamado ninex eu vou falar que a
imagem é engex e a última versão dela vou falar que eu quero pegar a porta 8080 da minha máquina e apontar pra porta 80 do contêiner legal não quero mexer com volumes ainda não quero fazer nada só quero trabalhar dessa forma aqui agora antes de mais nada eu vou remover o contêiner atual que eu tenho rodando Então vou dar um docker RM - F Vou colocar aqui legal e agora magicamente já que eu tenho esse arquiv Minho do docker compose o que que vai acontecer aqui eu vou dar um comando docker compose app - d
e o que que vai acontecer ele acabou de criar esse meu contêiner com um comando Se eu der um docker compose PS você vai perceber eu tenho aqui o meu contêiner rodando igualzinho como eu tava trabalhando antes inclusive com a porta ainda tendo aquele apontamento mas às vezes a gente quer algo um pouco a mais por exemplo vamos imaginar que no meu mundo do desenvolvimento eu quero poder editar aquele arquivo index P html no começo tá e eu não quero perder aquele conteúdo como a gente perdeu nesse caso então o que que a gente pode
fazer para eu conseguir programar na minha máquina e em tempo real essa alteração ser alterada no meu contêiner Então nesse caso o que eu posso fazer aqui é trabalhar com volumes ou com algo que a gente chama de bind mounts tá basicamente é uma forma de compartilhamento de arquivos entre o nosso computador e a nossa máquina nesse caso que a gente vai fazer um bind Mount mais eles são gerenciados pelo docker não quero entrar nesse nível de detalhe hoje aqui com vocês mas basicamente o que eu quero fazer é o seguinte eu vou falar que
eu tenho uma pasta html no meu computador e eu quero fazer com que essa pasta HTML substitua a pasta HTML onde os arquivos do engex ficam tá é basicamente isso que eu quero fazer eu vou salvar esse meu arquivo e vou dar um docker compos Men d e ele vai recriar o contêiner aqui para mim agora se eu acessar aqui esse meu inex eu vou ter um erro 403 forbidden por quê Porque eu não tenho nada dentro da pasta HTML e por que que eu não tenho eu não tenho porque ele está buscando algo numa
pasta HTML do meu computador e no meu computador eu tenho agora essa pasta HTML o que eu posso fazer aqui ó é criar um arquivo chamado index P HTML nesse arquivo eu vou colocar a o cycle e eu vou colocar aqui o H1 Welcome to FC legal agora eu vou atualizar e Prontinho agora se você perceber o que que tá acontecendo Eu estou conseguindo programar no meu computador com os arquivos do meu projeto tá mas eu consigo agora visualizar em tempo real o conteúdo que está no meu contêiner Então acho que essa aí é a
grande pegada que a gente tem que entender que nós podemos fazer aí nesses casos tá então isso ajuda demais todo o nosso processo de desenvolvimento imagina que eu preciso de um banco de dados my cql vou ter que instalar my k na minha máquina eu não preciso Olha só eu vou no meu docker compose aqui e coloco quero um my KL vou pedir pro CoPilot me ajudar e ele já trouxe aqui ó my KL e ele ainda vai criar uma pasta vou chamar uma pasta P docker bar mycell para guardar os arquivos do banco de
dados do mycell aqui no meu computador porque se eu matar o contêiner eu ainda não não perco os meus arquivos Tá e agora que eu tenho um serviço de mais k aqui eu posso dar um docker compose app Men D E adivinha o que vai acontecer ele vai baixar a imagem do My Kell e vai colocar o my Kell para funcionar aqui no nosso computador normalmente Tá então vamos lá no nosso computador não né dentro do nosso contêiner tá então o que a gente tem que entender pessoal é que um contêiner é um processo que
executa qualquer tipo de aplicação nos sistemas operacionais uma vez que você tem esse contêiner pronto você pode usar ele tanto para desenvolver quanto para colocar sua aplicação em produção né hoje todos os serviços e nuvem suportam contêiners basta você ter especificação do seu contêiner gerar imagem do contêiner a gente já vai falar sobre isso e vai ficar cada vez mais simples para você fazer o Deploy ao invés de você ficar fazendo subindo um monte de arquivo você vai subir uma única imagem e né simplesmente as suas aplicações elas vão funcionar simples assim galera tá então
essa aqui é a grande pegada o ponto mais legal agora nesse momento é o quê que agora eu já tenho dois contêiners rodando ó deixa eu abrir o meu docker desktop né eu tenho aqui dentro rodando a o engex e eu tenho o MySQL inclusive tá aqui rodando na minha porta 3306 aqui para mim né eu poderia fazer até algumas coisas legais aqui tá por exemplo eu poderia chegar aqui e fazer algo do tipo ah deixa eu renomear temporariamente esse arquivo o docker ele tem um comando chamado docker init olha só que interessante esse docker
n ele fala eu quero criar uma aplicação node por exemplo tá então eu vou falar que eu quero criar uma aplicação node aqui para mim vou dar um enter aqui para mim qual versão do node eu vou colocar 21 vou usar npm ah como que você quer inicializar sua aplicação eu vou colocar um index ah eh node index.js é isso que eu inicio comal que ele vai usar vou colocar porta 3000 e beleza aqui para mim o que que o docker init fez aqui para mim galera não sei se você percebeu O docker init ele
gerou um arquivo Prontinho para mim para eu rodar aplicações node na porta 3000 aqui para mim ele gerou um docker file o que que é esse docker file pessoal é um arquivo de especificação do que vai ter na sua aplicação né E aqui ele gera um arquivo super completo que talvez você fique até com dúvidas mas esse trabalhar com o docker file basicamente é a especificação de tudo que você precisa para rodar a sua aplicação tá nesse caso ele tá apenas aqui usando alguns recursos meio que avançados de Cash para conseguir evitar aquela lentidão com
node mods ou coisas desse tipo tá mas a grande sacada aqui se você perceber é que ele vai cada vez facilitar a a a vida né npm Run index.js aqui eu vou colocar e como que eu consigo trabalhar aqui nesse caso eu poderia criar por exemplo uma aplicação né então posso dar um npm init menos y aqui para mim ele vai criar né a o package P json aqui tudo bonitão a o outra coisa que eu posso fazer eu posso criar um index.js né e aqui eu posso chegar pro meu CoPilot Será que ele vai
funcionar aqui né a Create a Web Server using nodejs with mysle Connection aqui para mim vamos ver se o meu CoPilot ele consegue me ajudar para trabalhar dessa forma então ele sugeriu como é que vai funcionar os arquivos e eu vou falar OK como é que eu falo ok Create será que é isso Não ele tá querendo criar baseado no workspace eu não quero galera eu não sei se vocês viram inclusive tá vocês viram o novo CoPilot Ah que tá em experimental esse cara não sei se vocês chegaram a ver com a gente eu vou
inclusive fazer o seguinte tá me deem um segundo que eu vou aproveitar e vou mostrar essa parada aqui para vocês pera aí deixa eu recompartilhar minha tela Pera [Música] aí eu vou pegar esse cara aqui Open folder quer ver 21 aqui acho que agora vai ficar melhor pera aí deixa eu dar um present share screen entire screen aqui ó esse cara aqui galera ele tá usando é uma versão insider do CoPilot né E aqui nessa versão insider quando eu vou aqui no CoPilot eu consigo fazer com que ele trabalhe no formato de agente no final
das contas né E quando eu boto ele paraa gente gente eu posso falar o seguinte né a crie uma aplicação simples em nodejs utilizando um banco de dados mais seq L trazendo uma listagem de cursos da full cycle como o curso full cycle 4.0 Ok vamos ver o que ele o que que ele faz baseado nisso aqui ó Então esse nosso cara ele vai utilizar né alguns pontos para gerar as nossas aplicações aqui pra gente então a gente ganha um tempo aqui nessa nessa nessa nossa aula aqui ele tá gerando o package p json agora
ele vai atualizar o docker compose pemo provavelmente ele vai ver o nosso my Kell tá gerando ali o docker file ele tá saindo criando os arquivos que a gente já tinha né esse aqui é o grande ponto aí né vamos ver o que que ele vai rolar e aqui ele tá mostrando ó tá gerando o index.js vamos ver como é que tá ficando os arquivos aqui que ele tá trabalhando né rodar o comando npm install pode rodar o npm install se você quiser e eu vou dar um continuar com o docker compose app Men D
men men build vou dar um ok e vamos ver esse cara roda para ver se cri Nossa aplic dar um accept aqui depois a gente vê se ele gerou alguma besteira depois a gente volta nele aqui mas basicamente gerou um novo docker compose aqui passando os da aplicação o nome do banco deos atualizou oo docker compose criou um volume aqui pra gente guardar os dados eu vou inclusive remover aquele docker compos ali vou remover aquele nosso que a gente criou de exemplo confiar nesse cara que ele utilizou ele gerou um docker file simples pra gente
iniciar tem o node mod e o index.js e aqui ele tá usando o my tá usando as variáveis de ambiente conectando o banco de dados criou a tabela fez um select fez uns exemplos de curso criou uma rota aqui pra gente e botou pra gente conseguir executar agora se isso aqui funciona galera aí eu não sei como é que esse camarada tá rolando aqui ó ele tá falando que ele tá tendo um problema de conectar o banco de dados galera seguinte Pessoal esse problema ele é muito comum prestem bem atenção pessoal como que está a
conexão com o banco de dados aqui ele tá utilizando o DB o rosto como DB aqui pra gente por que que ele tá usando o host como DB porque no nosso docker compos para conectar com o banco de dados a gente tá utilizando o nome do serviço DB tá então esse aqui é um ponto assim super mas super importante mesmo quando você tá trabalhando com contêiners tá então esse aí é um ponto importante deixa eu ver porque que ele não conseguiu se comunicar Ah o servidor tá rodando na porta 3.000 problema de conectar com o
banco de dados ah not found DB ele não tá encontrando Será que o my Kelly nosso já estava de pé vamos lá deixa eu criar um terminal meu sem o duc Pilot docker compose PS E é porque eu tinha mais e mais kelles rodando né Deixa eu remover todos os meus contêiners docker comp docker RM Deixa eu voltar aqui no meu docker desktop eu vou limpar todos os contêiners porque a gente ficou com mais contêiners de my Kell agora rodando provavelmente isso que estava rolando né então o que que eu vou fazer vou dar um
docker comp Men d e vamos ver se ele sobe agora esses caras aqui pra gente ele tá falando que no meu docker tem algo deprecated porque eu não preciso mais dos versions aqui isso é verdade tá rodando o npm install criou aplicação e agora a gente tem que ver se essa aplicação roda no final das contas né esse que é o grande ponto agora galera independente disso uma das coisas que eu quero que você preste atenção agora é o seguinte galera sabe o quê a Sim tudo que eu estou digitando aqui no meu computador está
dentro do contêiner E é isso que eu preciso que você entenda tá está dentro do meu contêiner Ok esse que eu acho que é o grande ponto aqui olha eu tenho a minha aplicação rodando eu tenho meu banco de dados rodando tá só não sei se ela vai tá funcionando vamos lá eu vou dar um Curl local host 2. 3000 ele tá dando um error fetching courses ou seja ele não tá conseguindo listar os cursos Talvez ele não tenha conseguido instalar o curso ou alguma coisa ali no banco de dados mas a minha principal questão
aqui com isso é não é o código do node que foi gerado pelo CoPilot ou qualquer coisa desse tipo né ah na realidade ele não criou né os cursos a query né ele poderia ter criado acho que ele não acabou nem criando quando ele rodou a primeira vez mas a grande questão aqui pessoal que eu quero trazer é perceba a velocidade que eu acabo tendo em relação à desenvolvimento eu não tô falando a o CoPilot para eu programar em ia ou qualquer coisa desse tipo tá a A grande questão mesmo que eu tô colocando aqui
é que eu tenho um ambiente node rodando utilizando my cql totalmente configurado qualquer desenvolvedor que precisar trabalhar o que que ele vai faz dizer o seguinte tá ele simplesmente eu vou dar um um docker compose app Men D Esse comando ele faz o nosso ambiente funcionar Se eu der um docker compose Down ele vai matar esses meus contêiners o ponto nesse momento é que se eu pegar esse exato código subir no meu docker Hub por exemplo o que que vai acontecer todos vocês que baixarem esse código e tiverem docker no computador e rodarem docker compos
app Men D você vai ter o mesmo ambiente exatamente com o mesmo comportamento que eu tenho hoje aqui tá eu acho que aqui é a grande questão que acaba assim deixando o processo cada vez mais tranquilo para se trabalhar pessoal se você pensar bem tá Quantas vezes você já teve conflito em processos de ambiente de desenvolvimento né Quantas vezes você já teve alguma situação que cada vez que você vai subir ou tem que subir arquivo por arquivo Ou você tem que dar um Git clone em algum lugar daí você tem que instalar numa máquina virtual
e tudo mais o docker no final das contas ele simplesmente ele vai nos permitir a trabalhar realmente de forma padronizada tá e o mais legal de tudo isso sabe o que que é é que no final do dia tá tá vendo esse docker file aqui que foi gerado esse docker file aqui pessoal ele faz algo muito interessante que é o qu ele pega uma imagem nesse caso do node 18 ele fala qual o diretório de trabalho copia o package P json ele roda um npm install aí ele copia todos os arquivos que estão na minha
máquina dentro do contêiner e roda ali pra gente um na porta 3000 né E aqui é o comando que ele vai iniciar a nossa aplicação rodando então o que que acontece a dica que eu dou para vocês hoje é tecnologias como o docker elas evolu iram tanto num aspecto que você consegue absolutamente do zero criar uma aplicação em segundos tá e quando eu falo que é em segundos acaba sendo em segundos mesmo e eu digo isso por quê Porque por exemplo se você usa um docker desktop da vida né eu vou ah dizer que você
pode dar um docker init e já começar a criar o seu projeto absolutamente do zero né então isso aí muda completamente a forma de como que o desenvolvimento acaba trabalhando no dia a dia quem aí tem quem aí sofre para subir e botar uma aplicação ah em produção tá isso aí é um ponto importante tem várias perguntas que a galera acaba fazendo tem uma pergunta que é interessante como que eu posso proteger o conteúdo dentro do meu contêiner e A grande questão questão aí é o que é proteger o meu conteúdo tá Ah o que
a gente tem que pensar é que o contêiner é um ambiente de execução e que vão ter arquivos lá dentro né o máximo de forma geral que você pode fazer é na hora de você rodar o seu contêiner você tirar tudo quanto é permissão de Root alterações de arquivos e coisas desse tipo para instalar o menos possível de bibliotecas para evitar com que alguém entre e fique trabalhando eu vou dar um exemplo aqui para vocês pessoal a na linguagem go Tá eu vou fazer algo bem simples para vocês entenderem a a ideia aqui tá eu
vou apagar todo esse nosso projeto que a gente fez até agora e eu vou vou falar pro CoPilot aqui crie um simples Web Server usando a linguagem go ah e não e tem que ser no modo de agente Então vou colocar aqui ó crie um simples Web Server na na linguagem go com um olá mundo tô pedindo aqui para ele criar um Web Server com olá mundo aqui pra gente conseguir trabalhar tá Então vamos lá continuar acessar executar beleza em tese ele já criou aqui o meu Web Server tá então tô com Web Server rodando
aqui numa aplicação trazendo um holam mundo e ela tá rodando aqui na porta 8080 mas nesse caso 8080 do meu computador tá eu vou até mostrar ó não tenho nenhum contêiner rodando Então esse programa aqui em funciona se eu der um go Run a main.go o que que vai acontecer eu vou rodar essa minha aplicação na porta 80 se eu criar um outro um Curl aqui ó Curl local host 2.880 você vai ver que eu tenho um ham mundo mas vamos imaginar que eu quero colocar essa aplicação dentro do docker para eu trabalhar então o
que que acontece eu posso dar um docker init aqui para mim e ele fala olha detectei que você tá usando go então beleza vou botar GO Ah qual a versão do go que você tá usando acho que é um Ah qual o diretório Onde está o seu arquivo Main né é o ponto a qual a porta que ele tá escutando 8080 pra parte de segurança que foi o que vocês estavam falando agora Como que eu consigo proteger os meus arquivos então aqui ó eu desabilito o password eu falo que o usuário é não existente eu
crio um user chamado app user e ele não tem acesso a Shell ele não tem acesso a nada ou seja acaba gerando um arquivo go binário aqui que não vai servir absolutamente para nada na hora que eu for trabalhar então essa aplicação esse meu coner ele vai est muito seguro eu vou dar aqui um docker compos app menos d a minha porta já tá sendo usada né porque eu tô rodando aqui né docker compose docker compose docker compose app Men d a minha aplicação subiu Então deixa eu dar um docker vamos ver aqui no docker
desktop ó servidor na porta 808 rodando se eu clicar aqui deixa eu ver aqui só para ver o que que ele tá colocando pera aí qual que é endereço deixa eu pegar o endereço da Rota que ele trouxe aqui para mim na minha aplicação barra ah ele tá colocando no local host aqui também para mim né Deixa eu ver uma coisa curso local host 2.880 ele tá recebendo empty response for me server e eu não sei por que ele tá recebendo MT response deixa eu apagar aqui os meus cop pilots e deixa eu ver se
o meu programa está em execução docker compos PS e o docker entry Point que ele tá trabalhando ah galera eu já sei o que ele tá fazendo ele tá rodando o meu server mas não na minha versão final pra produção na realidade tá o grande ponto aqui é que se você perceber mesmo usando aqui o meu docker compose ele consegue de uma forma geral fazer o build da minha aplicação passar por cada etapa que eu preciso para que eu consiga rodar a minha aplicação mas o grande ponto aqui nesse caso é que ele passou uma
série de argumentos aqui para mim para que eu fique de uma forma cada vez mais segura ao executar as minhas aplicações eu vou tentar fazer algo interessante para vocês darem uma olhada Olha só eu vou dar um docker compec menos it tá como que é o nome do do meu contêiner Como que é o nome do meu carinha aqui nome do meu serviço server server sh olha aqui pessoal esses caras aqui ó eu tenho que dar no final das contas aqui para eles Ah já sei o que tá acontecendo na realidade docker RM menos RF
ele tá eu não tô eu tenho que dar um docker compose up menos D menos menos Build para ele refazer o build da imagem por isso que ele não tava batendo ali com a gente por conta disso que tá rolando deixa eu apagar aqui o meu coner antes que ele dê ruim toda vez que você troca galera o seu docker file e lembrando pessoal docker file é um arquivo simples declarativo pode parer Complexo da forma como tá mas eu vou explicar como é que funciona e eu vou criar um do zero pra gente entender e
criar o nosso esses caras aqui Eles já V pros pro docker nit para você já ter uma aplicação meio que pronta PR produção tá então isso isso é o ponto important Men D menos menos build aqui para mim server build Mount ele não tá conseguindo fazer o meu mount Provavelmente por conta de esses caras aqui para fazer o download aqui da target at compute Cash que ah tá ele não tem o go. Mod eu tenho que inicializar o meu pacote Google go modit A exemplo FC tá eu esqueci galera de inicializar tipo um package P
Jon que o nojs tem o gol tem o go mod tá E daí por isso que ele tá reclamando porque eu não tinha iniciado um projeto Gol oficialmente tá então agora ele vai rodar então ele tá gerando aquela imagem e pronto rodou meu contêiner agora eu acredito que tá tudo em ordem docker compose PS minha aplicação rodando Curl local host 2.880 olá mundo vindo da minha aplicação com go galera eu não sei se vocês conseguiram perceber mas a velocidade que você tem hoje de desenvolver uma aplicação e colocar essa aplicação rodando Tá a em coners
cada vez ficando mais simples tá porque simplesmente você dá esse seu docker init escolhe a linguagem de programação ele vai identificar tudo no seu código e vai colocar no seu contêiner de uma forma extremamente otimizada e o mais legal de tudo é que se você for aqui né Na hora de você trabalhar você pode até fazer o quê ah Compartilhar esse volume como eu fiz lá com o engex ou seja tudo que eu tô mexendo no meu computador no final das contas vai sendo aplicado no contêiner e daí eu não tenho chance nenhuma no final
das contas de perder o conteúdo que eu tô fazendo agora o mais legal de tudo sabe o que que é é que esse contêiner aqui que tá rodando e que a gente acabou de fazer e tudo mais eu posso publicar isso como uma imagem no meu docker Hub e compartilhar com outras pessoas Então o que eu tô querendo dizer aqui nesse caso é que eu posso fazer algo desse tipo pessoal eu posso rodar um comando docker tá build menos T vai ser o t é a tag é o nome da imagem eu vou passar o
meu namespace que é o Wesley Williams vou falar imersão 21 docker aqui para mim e vou vou falar que o meu docker file tá nessa minha pastinha na minha pasta ponto né na pasta atual que eu tenho então quando fizer isso o que que ele vai fazer ele vai gerar o build dessa imagem ou seja ele gerou essa imagem customizada para mim e agora o que que eu posso fazer eu posso chegar aqui e d um um docker push Wesley Williams imersão 21 traço docker dois pontos latest tá E aí nesse momento o que que
vai acontecer eu acabei de subir essa imagem no meu docker Hub então se eu for em hub.docker.com e buscar o meu aqui ah deixa eu ver se eu consigo fazer o signin do meu Wesley Williams aqui olha só o que apareceu aqui a imagem que eu acabei de trabalhar agora o mais legal de tudo é que nesse momento quem aí tá nesse momento Quem aí quer rodar essa aplicação na máquina de vocês eu vou pedir para vocês digitarem e eu vou colocar o código Aí no terminal aí no chat para vocês se você tiver o
docker você vai colocar docker Run Ok menos p 80 80 2.80 80 e a minha aplicação copiem E colem aí no seu computador tá O Edson Vitor fez uma pergunta então Caso não esteja no wsl o docker vai montar uma VM para rodar os contêiners mesmo com wsl ele vai criar uma VM o que a gente tem que entender pessoal é que o docker ele é uma solução para Linux então eu rodando aqui no Mac quando eu instalo o docker desktop ele vai criar uma VM gerenciada pelo docker desktop Linux para que o docker possa
ser executado tá o docker é um software feito para Linux então para o docker no seu computador Ou você tem o Linux já por padrão e instala o docker community Edition ou você Instala o windows com wsl o docker desktop vai te ajudar e te dar diversos recursos para facilitar sua vida ou se você quiser instala o wsl instala o docker community Edition mas daí você não vai ter vários recursos como o docker init por exemplo tá legal tem gente que tá falando que não foi possível achar a imagem imersão 21 traço docker tá aí
a imagem galera ah galera eu acho que eu já sei o que pode ser Ah a minha máquina ela é arm né ou seja como essa máquina ela é arm eu uso o chip M1 da Apple né então ela não tá exportada para a x64 eu vou pedir para ele fazer o seguinte vamos ver se o meu CoPilot me ajuda né porque tem o docker x que você escolhe inclusive né os o os sistemas opera se você fizer o curso fusy inclusive você vai ficar craque em tudo isso mas eu vou colocar Gere o build
dessa imagem com a tag Wesley Williams bar imersão 21 laço docker 2 p latest mas também com compatibilidade de x86 acredito que pode rodar usando o build x vamos ver se o CoPilot em modo aqui não sei se ele vai est em modo agente Será que ele tá em modo agente nesse momento deixa eu ver se ele tá no modo ag gente aqui O bom que eu tô fazendo isso com vocês galera mas eu gosto de testar junto com vocês então é legal toda essa parada de A tá mudando muito a nossa forma de desenvolvimento
galera vamos ver coloquei aqui no formato de agente para ver o que que ele vai rolar aqui ó docker buet menos menos Create use vou dar um continuar vamos ver o que que ele vai colocar agora vamos criar aqui focado em arm x64 e etc para push Então vamos lá vou dar um continuar ele tá fazendo o build tanto em amd64 Linux RM 64 que é a minha versão e ele já vai fazer o push essa imagem aí no docker Hub vamos ver o que que vai rolar para vocês conseguirem baixar aí para vocês e
galera o docker permite que você consiga escolher toda a plataforma que você quer compilar tá Ou seja eu posso compilar para Windows eu posso compilar para Mac digo em relação à plataforma arquitetura e o go também trabalha exatamente da mesma forma tá então Isso facilita muito mas muito mesmo a vida da gente então o que ele tá fazendo aqui ó é subindo as versões baseadas na arquitetura aí de vocês Ah será que ele perdeu meu compartilhamento Será que sumiu meu compartilhamento pelo menos aqui parece que sumiu vê se voltou vamos ver se foi galera vamos
ver se foi essa parada deixa eu dar um atualizar aqui L Dan a minute seol aqui tá tá disponível tanto para a amd64 e RM tente dar um docker Run agora aí galera para ver se funciona aí com vocês novamente O Rafael tá falando olha o termo docker não tá reconhecido Cara você não instalou o docker corretamente ou ele não tá nas suas variáveis Ah no pef das suas variáveis binárias tá aí ó o Felipe da Maceno falar foi aqui é por conta de arquitetura Tá show de bola e depois acessem aí né local host
2.880 E aí você consegue já ter aplicação agora o mais louco de tudo isso é que dependendo da situação você pode ir até um pouco mais longe tá Ah eu não sei se eu tô com ele habilitado aqui deixa eu ver se eu tô com ele habilitado mas eu acho que eu não tô com ele habilitado aqui Running debug duro que eu não tô com ele com o Google Cloud habilitado deixa Deixa eu olhar Run debug eu não tô com o gcloud aqui cara eu não sei porque deve ter desinstalado sem querer gcloud deixa eu
tentar instalar aqui galera essas coisas elas ficaram tão fortes nos últimos tempos e para fazer o Deploy da aplicação de vocês cada vez acaba ficando ainda ainda mais fácil principalmente de acordo com os Cloud providers que você acaba trabalhando Então pessoal eu acho que o ponto principal dessa Live tá não é querer ficar falando Ah se o docker é bom se o docker não é Ou qualquer coisa desse tipo tá o ponto principal mesmo é realmente conseguir falar para vocês que no final do dia vocês precisam trabalhar com docker tá o que eu digo aqui
para vocês é o seguinte tá se vocês não aprenderem docker não tô querendo ser dramático tá Galera vocês simplesmente não vão ser capazes de se manterem no mercado o docker hoje é algo indispensável para qualquer empresa quer negócio o docker hoje é como se fosse o Git não tem como você querer trabalhar numa empresa sem trabalhar com Git sem controle de versão alguém consegue fazer alguma coisa desse tipo Então esse aí que é o grande ponto Independente se você trabalha com backend ou com frontend você precisa sim entender de docker olha aqui pessoal baixei um
um plugin aqui do vest code do Google R que é um serviço de coners da Google Cloud que é muito bom né tô falando que todo mundo pode acessar el eu falei aqui em qual repositório onde ele vai subir service account eu não vou passar vamos ver se ele vai conseguir subir essa parada local com docker vou clicar em Deploy aqui vamos ver se ele consegue fazer o Deploy pra gente da nossa aplicação com um clique tá a grande sacada da gente conseguir trabalhar com docker é que como você tem aquele docker file que é
o que tem toda a sua aplicação dentro significa que para onde você levar esse docker File a sua aplicação vai funcionar se eu for no serviço da WS agora e mandar publicar com aquele docker file vai funcionar se eu for pro Google Cloud que é o que eu tô fazendo agora aqui a aplicação vai funcionar então qualquer empresa deve de forma geral hoje em dia adotar o na realidade não é que deve o docker já é uma solução muito antiga né então se você tá tendo contato pela primeira vez a principal dica que eu dou
para vocês nesse momento com todo carinho do coração tá Invista aprender bastante sobre essa tecnologia porque ela mudou a forma de como você desenvolve e ela mudou também a forma de como que a gente consegue colocar softwares em produção tá Isso aí é um ponto assim super importante para todo mundo ah ele tá entrando e fazendo o processo de Deploy eu acho que ele deve estar configurando um novo projeto aqui ó aparentemente gerou falou que tá em produção deixa eu clicar aqui nesse link e apareceu aqui o nosso olá mundo galera Olha só pessoal com
um clique nós fizemos o Deploy dessa nossa aplicação tá então se vocês clicarem aí tá aí a nossa aplicação que a gente fez aí em go né o CoPilot deu uma uma ajudada aí na nossa vida aí nesse caso mas se você perceber a gente fez a aplicação o servidor Web está rodando e tá tudo funcionando feito Deploy no Cloud provider que vai automaticamente escalar conforme o número de acessos vão crescendo fazer isso só foi possível porque o docker o Google Cloud olhou apenas para esse arquivo aqui ó tá apenas para esse arquivo pro docker
F esse docker file pegou todo conteúdo tem né do noso sistema n Copi tudo aqui dentro se você olhar ó ele tá copiando todos os arquivos quer ver ó copy tem algum lugar que ele tá dando copy né ele vai copiar todos os arquivos que estm no nosso projeto e daí ele vai botar isso para rodar de uma forma extremamente segura nesse caso porque eu tô trabalhando com docker nit Mas eu posso criar imagens extremamente simples docker filos extremamente simples pra gente trabalhar tá pessoal assim quem aqui viu o docker agora pela primeira vez e
o que que vocês acharam aí dessa primeira impressão que eu acabei de trazer aqui para vocês tá deixa eu beber uma água enquanto isso a galera que viu pela primeira vez Apesar desses montes de arquivos aqui que com o tempo você vai entender e esses arquivos tá pessoal eles são prontos para produção então eles são grandes mesmo mas no dia a dia né para desenvolvimento você pode criar alguma coisa assim ó uma aplicação in Vou Colocar assim ó dockerfile.dev aí eu vou colocar deixa eu instalar esse docker aqui para ele não ficar me enchendo o
saco best Coach beleza from golang traço Alpine 1 pon 23 que uma versão tô pegando uma versão de uma imagem docker vou falar que tudo que eu vou trabalhar vai ser dentro da pasta app vou copiar todos os arquivos que estão na minha pasta do meu computador para dentro do contêiner e agora eu vou rodar o quê eu vou fazer o seguinte eu vou rodar um Tail ta - F bar Dev barn tô colocando isso aqui só para manter o processo rodando tá E aí quando eu fizer qualquer coisa desse tipo o que que pode
acontecer eu posso vir nesse docker compose e criar um em vez de server Tá eu vou criar um outro serviço aqui chamado appdev por exemplo onde eu vou falar que o a o build vai acontecer com o docker file vai ser docker file ponto tu deve tá o context é beleza mas aqui o que eu quero fazer é que volumes vai ser na minha pasta app e a porta que eu vou compartilhar eu vou em vez de compartilhar a porta 8080 do meu computador Vou compartilhar 8081 só para não dar conflito com a outra mandando
para 8080 se eu subir agora isso aqui ó docker compose docker compose Zap menos D que que vai acontecer ah ah não é golang traço Alpine né é golang dois pontos Alpine 1.20 como que é como que é Golem pelo amor de Deus faço isso o tempo inteiro Jesus weng dois pontos Alpine vou deixar assim mesmo vai eu queria forçar a versão 1.23 da golang mas a última já é versão 1.23 então não vou ter problema Beleza então agora eu tenho o docker compos PS Eu tenho tanto server quanto o do desenvolvimento então agora o
que que acontece com o desenvolvimento só para vocês saberem eu posso entrar no contêiner Então posso dar um docker eec docker compose eec menos itd sh e olha só que interessante pessoal eu estou dentro do contêiner normalmente Eu Posso rodar minha aplicação eu posso colocar docker docker não go Run main.go para rodar minha aplicação em Go e no meu computador agora aqui o que que acontece se eu chegar aqui eu posso dar um docker um docker não um Curl local host 2.80 81 e eu tô acessando exatamente a aplicação em go que eu desenvolvi então
agora se eu começar a mudar isso aqui ó vou colocar Olá full cycle e eu mudo aqui nesse cara quando eu subo de novo o servidor web e vou rodar agora eu já tô com Ola pic então o que que isso significa galera significa que eu estou desenvolvendo uma aplicação em go no meu computador e eu não preciso ter o go nem instalado no meu computador se eu trabalhar com contêiners eu não preciso de instalar no meu computador o my Kell o post o node o go o Java eu não preciso instalar nada no meu
computador porque tudo vai estar rodando no contêiner Então essa história de ficar formatando o computador uma semana assim uma semana não de tanta tranqueira que a gente instala acabou essa palhaçada porque a gente não precisa de mais nada né ah wle eu preciso rodar o Rabbit MQ agora porque eu vou trabalhar com fila Ah então eu coloco aqui ó Rabbit MQ né para me ajudar ainda mais o o o CoPilot ele acaba ainda facilitando mais a minha vida será que é só isso vamos colocar mais el tem portas Será que só com as portas ele
já roda vamos rodar aqui ó docker composa Men D E aparentemente ele vai subir também o noss rabit MQ Udo que você precis inst aplicações você sempre vai ter pronto no seu computador você garante que o seu ambiente de desenvolvimento vai ser igual ao ambiente de produção você vai evitar esses montes de surpresa quando você precisar fazer a publicação de uma aplicação na nuvem somente com aqueles arquivos o dockerfile já é o suficiente vocês viram a velocidade que com um clique eu consegui colocar uma aplicação em produção lá na Google Cloud isso aí muda o
jogo galera tá então assim ah óbvio que tem prática óbvio né que você tem que estudar a fundo mas a minha ideia aqui na realidade era o quê D Essa visão geral tá eu não quis ficar focando muito em teoria e ficar passando muitos comandos você vai perceber que na maioria das vezes você vai rodar muito mais usando docker compose app docker compose EH up men d ou docker compos Down para desligar os seus contêiners Mas você programa normalmente no seu computador o que você programa afeta direto o contêiner você desligou seus contêiners seu computador
tá limpinho de volta tudo bonitinho Você subiu seus contêiners e acabou agora imagina você tá trabalhando com cinco projetos simultâneos imagina a bagunça cada projeto desse precisa do de mais KL Imagina você ter um monte de my KL ou ter aquele my KL que vai conter no banco de dados de todos os projetos que você tá trabalhando cara você não precisa disso você dá um docker compos up menos D Você subiu o seu ambiente completo acabou aquele projeto dá um Down vai pro outro projeto dá um up e já tá tudo OK então isso aí
muda completamente a perspectiva de conseguir trabalhar legal então isso aí é um ponto assim que faz muita mas muita a diferença algumas perguntas aqui ah vi se você utiliza para cada tecnologia um um contêiner nesses exemplos você passou ele já é gerando um contêiner por banco de dados Ah para server etc Sim nesse caso aqui ele gerou aqui o rapit MQ ele pode ter gerado um banco de dados mais Kell sim aí esse contêiner vai ser utilizado esse banco de dados vai utilizado Nesse contexto do contêiner Mas se você quiser você pode subir a um
contêiner de banco de dados normal para servir Tod todos os seus projetos honestamente eu não gosto muito dessa abordagem A não ser que a sua máquina seja muito fraca e para você não ter que ficar subindo muito o contêiner e ocupar memória você precise ter você prec você prefira ter a um contêiner de banco de dados que resolve toda a vida inclusive se você for aqui no docker desktop e for em extensions provavelmente se digitar aqui por exemplo my Kelly deixa eu ver ó se eu colocar post aqui ó postgis se eu der um install
aqui nesse cara ele já vai instalar o postgis ah na minha máquina como um contêiner rodando e agora eu tenho o o o post na minha máquina e todo mundo todo o projeto pode utilizar a grande sacada é que eu não tive que no site do postgis instalada next next next aqui simplesmente ele é um contêiner se eu chegar e matar esse contêiner todas as informações do post Eles já foram embora então aqui ó tô aqui com o post instalado ó PG admin 4 ele vai subir aqui e eu já vou poder trabalhar normalmente com
post em qualquer local tá então isso aí facilita para caramba pra gente conseguir trabalhar legal então aí ó então ó já tô aqui com a parada para eu conseguir trabalhar com o post e ele pode ser utilizado agora em qualquer lugar aí do meu computador a grande beleza de tudo isso pessoal é a flexibilidade que você tem de conseguir desenvolver em qualquer lugar fazer o Deploy em qualquer lugar manter o mesmo comportamento todas as aplicações de grande porte nas grandes empresas hoje já utilizam Dock eles utilizam inclusive o docker como base para gerenciar contêiners através
de um cara chamado kubernetes o kubernetes é um dos caras assim fantásticos para que você consiga fazer o gerenciamento de múltiplos contêiners rodando simultaneamente imagina que você tem uma aplicação que você precisa rodar 3.000 aplicações como que eu garanto que todos esses contêiners estão funcionando se um cair como é que ele sobe de novo se eu precisar escalar com muito tráfego como é que ele vai escalar então o kubernetes ele leva isso ainda para um outro nível Tá mas não é o escopo do assunto de hoje o maior ponto que eu queria trazer aqui para
vocês é como o docker ele pode mudar dar o jogo em relação à produtividade no seu dia a dia para você conseguir trabalhar Beleza agora pessoal negócio é o seguinte tá ah tudo que a gente tá trazendo aqui nesse Esquenta no final das contas é uma forma de você tá mais preparado paraa imersão que vai acontecer na próxima segunda-feira tá essa imersão ela vai ser fantástica porque a gente vai trabalhar com muita tecnologia diferente a gente vai trabalhar com go você vai aprender a desenvolver aplicações altamente performáticas com go você vai aprender a trabalhar com
nestjs para microsserviços você vai aprender a trabalhar com web sockets você vai aprender a trabalhar com nextjs você vai aprender a trabalhar com a pas Kafka você vai aprender a trabalhar com Kafka Connect tem muita coisa bacana tudo orientado a microsserviços com arquitetura distribuí e tudo mais a gente vai desenvolver um home broker do zero na próxima semana para que você consiga acompanhar bem aí esse home broker Ah eu recomendo demais que você possa a acompanhar durante essa semana todos os dias aí às 7 horas da noite a essas lives que a gente tá fazendo
para te dar uma visão Geral das tecnologias aí que a gente tá utilizando Beleza tem gente perguntando aqui o que que eu o que que que eu digo sobre podman Ah eu recomendo que vocês vejam um vídeo bem completo que eu gravei sobre podman no YouTube Assista esse vídeo vale a pena você vai ter toda a minha opinião sobre ela e vai ser uma muita opinião baseada em dados entendeu beleza galera então meu povo ah espero que vocês tenham aí uma boa noite espero que vocês tenham curtido é uma live curta mas a ideia é
que a gente faça um apanhado geral e principalmente Como que você consegue ter uma ideia de trabalhar com docker de ambiente e desenvolvimento aí no seu computador fechou pessoal muito boa noite para vocês fiquem com Deus Durmam bem que essa seja uma semana iluminada para todo mundo que vocês consigam ah evoluir bastante profissionalmente pessoalmente que dê tudo certo no trabalho de vocês e que você possa comparecer com a gente aqui durante essa semana e essa próxima semana no Esquenta não tenho dúvidas que você vai poder aprender bastante com a gente Lembrando que na semana que
vem a gente vai ter assim convidados de peso também palestrando na imersão todos os dias à noite a gente já tem confirmado por exemplo Juliano Martins do Mercado Livre que é o principal responsável pela plataforma que mais cresceu a possibilidade do Mercado Livre escalar ali para mais de 30.000 microsserviços 15.000 desenvolvedores Então vai falar muito também sobre ia Então galera vocês não podem perder a gente também tem Rodrigo branas que vai participar com a gente então galera fiquem antenados porque o Esquenta tá começando agora e a imersão começa a semana que vem e eu não
quero que você perca nada de conteúdo um abraço aí para vocês tudo de bom fiquem com Deus e até amanhã galera na nossa próxima Live aí do Esquenta
Copyright © 2025. Made with ♥ in London by YTScribe.com