Fala aí beleza seja bem-vindo seja bem-vinda a mais esse vídeo aqui no canal eu sou Fabrício Veronez eu tô aqui para ajudar você a criar aplicações escaláveis de grande porte utilizando o cloud devops e hoje nessa nossa Live aqui a gente vai falar sobre um assunto que é essencial para qualquer programador para qualquer programadora para qualquer profissional que quer criar soluções escaláveis de grande porte quer trabalhar nos melhores projetos Hoje a gente vai falar sobre docker Mais especificamente sobre docker compose porque quando a gente fala em trabalhar com docker criar diversos contêiners no nosso ambiente
utilizando o docker container Run para criar ali a nossa stack né o nosso conjunto de processos que vão ser executados ali para montar a nossa Solução Não É uma tarefa simples vamos combinar quem aí né me me fala aí no no chat me fala aí nos comentários quem aí já tentou criar um ambiente na mão com o docker executando vários contêiners com docker container Run docker Create Network mapear volume quando a gente aumenta a quantidade de elementos na nossa solução fica complexo vai fazer por script fazer por linha de comando é uma tarefa complexa mas
hoje eu quero mostrar para você justamente o DOC compose que vai simplificar a sua vida na hora de desenvolver na hora de criar as suas soluções com o DOC porque utilizando um arquivo emo e uma linha de comando a gente vai criar a parada toda cara a gente vai criar todos os contêiners com linkando Network fazendo mapeamento de volume vai dier ó vai ser lindo vai ser lindo maravilhoso e E caso você queira fazer uma alteração nesse nessa stack nesse conjunto de contêiners da sua solução é simplesmente mudar o mudar ali o arquivo eemo executar
com uma linha de comando que ele vai fazer todo o processo para você certo e é justamente isso que a gente vai ver vai ver hoje para ajudar você a se diferenciar como profissional que sabe realmente trabalhar com Doc e não tá ali simplesmente ali de curioso de curiosa executando meia dúzia de comando saber trabalhar com propriedade aí com o d mas antes eu quero fazer alguns comunicados aqui quero fazer um convite iradíssimo para você não perder que vai se você quer aprender mais sobre Dock sobre ambiente de desenvolvimento com o Dock se liga nesse
convite que vai ser muito top nesses dois convites que eu vou fazer para você primeira coisa se você tá aqui pela primeira vez pô seja bem-vindo seja bem-vinda se inscreve aí no canal aciona o Sininho Porque toda semana tem conteúdo como esse aqui tem aula como essa tem conteúdos irados para ajudar você a desenvolver aplicações escaláveis e de grande porte aqui a gente fala sobre docker sobre kubernetes sobre containers sobre Prometeus sobre Cloud sobre arquitetura cara se inscreve aí para você não perder mais nenhum vídeo e não esquece também de dar um like nesse vídeo
pro YouTube entender que esse conteúdo é de qualidade vale Vale a pena ser distribuído e se você quiser né dar mais um passo rumo à elite dos profess I de tecnologia com o meu acompanhamento aí embaixo vai tá um link para você preencher PR a gente bater um papo com você sobre a formação devops pro o meu treinamento para ajudar você a se desenvolver nessa área de cloud de devops e criando soluções escaláveis e de grande porte se você quer dar esse passo com meu acompanhamento entra em contato com a gente aí clica aí embaixo
preenche pra gente entrar em em contato com você entender o seu momento e ver como eu consigo te ajudar certo eh Além disso né Nós estamos com dois eventos aí irados que vão acontecer certo deixa eu colocar aqui deixa eu compartilhar aqui a minha tela né o primeiro aqui é o Opa foi errado o primeiro aqui é o devops for devis é a semana de imersão de conteúdo para você junto comigo migrar uma aplicação é que está desenvolvida vamos dizer assim na maneira tradicional não escalável não de grande porte e transformar ela numa aplicação e
escalável no ambiente de cloud utilizando as melhores práticas do mercado de contêiners criação de pipelines para automatizar o processo de entrega para fazer ali o monitoramento da aplicação ou seja inserir boas práticas de desenvolvimento para você criar eh soluções de grande porte utilizando as principais ferramentas do mercado vai acontecer dos dias 1eo a 8 de Abril 100% online gratuito é só você preencher aqui o seu e-mail colocar seu tempo de experiência e enviar aqui para você participar aqui são algumas tecnologias que a gente vai ver nesse evento o que você vai aprender aqui a gente
vai falar sobre aplicações de grande performance sobre devops sobre Dock sobre kubernetes sobre os os três principais Cloud providers Então se inscreve não deixa de participar que cara tá muito muito irado material ó show de bola e outra coisa muit muito importante eh no n no sábado né Eh dia Deixa eu confirmar aqui o dia 9 de março às 9 horas da manhã vai rolar um workshop e exclusivo pros alunos da formação devops pro o meu treinamento eu vou mostrar pra galera né Como trabalhar com ambiente de desenvolvimento matador e íssimo com docker e vs
code você vai ser capaz de montar um ambiente de desenvolvimento onde você só com o docker e o vs code instalado na sua máquina você vai conseguir ali desenvolver aplicações você vai poder desenvolver aplicações com post gre com myq com rabit MQ com Kafka com elastic search com Prometeus com qualquer elemento que faça parte ali da sua solução utilizando qualquer linguagem de programação e não necessariamente você vai precisar ter SDK runtime da linguagem que você vai trabalhar porque tudo vai ser utilizando contêiners docker então com esse depois desse workshop aqui você vai ser capaz de
montar qualquer projeto onde você com um simples glit clone no projeto consegue rodar em qualquer ambiente que tenha D e v code então Putz cara se você trabalha em equipe se você trabalha em vários projetos e tem essa dor de cabeça de montar setup montar ambiente quer se livrar dessa parada cara se participa aqui do nosso workshop eu vou colocar o link e aqui no chat vai tá aí embaixo na descrição do vídeo também para você aí e colocar já e o lembrete é importante o seguinte tá como eu disse esse workshop ele é exclusivo
pra galera da formação devops pro meu treinamento que é o meu treinamento Então essa aula Ela vai começar às 9 horas da manhã certo eu acredito que vai ali até 11 horas meio-dia porque é um assunto denso é um assunto extenso e no final esse assun esse esse conteúdo esse vídeo ele vai sair do ar tá ele vai ficar disponibilizado pra galera da formação devops pro então se você quer conhecer um pouquinho do que acontece na formação devops pro Você quer aprender a montar esse tipo de solução cara Confere aí com a gente vai rolar
no sábado mas novamente vou até eh reforçar aqui o conteúdo ele vai rolar ali ao vivo acabou o milho acabou a pipoca acabou ali a transmissão esse conteúdo vai ser retirado do ar tá aí não vai ficar ali no canal certo então é é importante você marcar aí no lembrete você colocar esse espaço na sua agenda travar alinha com a sua família Olha galera Putz vai rolar um workshop maneiro eu quero eu quero participar esse conteúdo vai agregar na minha carreira então com isso em mente se organiza para poder participar certo bom recado dado né
Vamos a agora pro nosso conteúdo Como eu disse né O que que é o docker compose o docker compose ele é eh uma ferramenta ou melhor um recurso do Dock que ajuda você a criar contêiners e diversos contêiners com apenas uma linha de comando você passa a deixar de trabalhar de forma declarativa onde você deixa eu até colocar aqui minha tela onde você tem que ficar aí o tempo inteiro executando docker com contêiner Run né para criar os seus contêiners e começa a trabalhar de forma declarativa declarando o ambiente que você quer trabalhar e o
docker faz isso para você e vai criar toda stack para você o docker compose Ele trabalha de uma forma parecida parecida veja bem com o kubernetes porque você começa a trabalhar com arquivos declarativos declarando todos os elementos e a ferramenta faz para você você não tem que se preocupar em executar docker container Run em executar docker Network Create nada disso você vai criar o seu arquivo eemo e a ferramenta quando você Executar a linha de comando vai fazer isso para você e o docker compos aí tem diversos outros recursos você consegue eh fazer Praticamente tudo
que você faz com linha de comando no Doc você consegue eh parametrizar eh o seu a o setup da Tec você consegue diferenciar ambiente de desenvolvimento e ambiente eh de produção fazendo combinação de docker compos e hoje a gente vai ver Exatamente tudo isso vai ser o guia definitivo de docker compos para você certo e para começar eu quero falar com você um papo muito importante que é a diferença entre docker file e docker compose muita gente que tá aí no no começo né Tá começando a aprender sobre docker inclusive o Reinaldo acabou de colocar
aqui ó Qual a diferença entre docker Fire e docker compose eh pô Reinaldo leu a minha mente aí mas o que que acontece Qual é a diferença entre docker file e docker compose o docker file ele é um arquivo onde você vai criar todas as etapas para você criar a sua imagem de contêiner para você criar a sua imagem Dock com o docker file você cria imagem docker você vai criar imagem de contêiner você vai preparar uma imagem para criar os seus contêiners e o docker compose ele é um arquivo onde você vai declarar os
contêiners então o docker file cria imagem para depois você criar o contêiner e o docker compose ele cria diversos contêiners Então essa é a diferença ah o dockerfile sub substitui docker compos ou vice-versa não eles se complementam e são utilizados em momentos diferentes você vai utilizar o docker file na hora de criar a imagem para depois criar o contêiner e você vai utilizar o docker compose para criar ali os seus contêiners Ficou claro você não ficou Claro Coloca aí embaixo comenta Coloca aí no chat e a gente depois faz outro conteúdo e tal para explicar
isso melhor certo então o que que você quando é que você vai utilizar o docker compose coment né o docker compose ele serve para criar diversos contêiners com um setup específico de forma declarativa onde eu não preciso executar várias linhas de comando eu executo uma só utilizando um arquivo declarativo eh com todos os elementos que eu quero criar onde é que você vai utilizar isso você pode utilizar num ambiente de desenvolvimento né você tá desenvolvendo uma aplicação Normalmente quando você tá desenvolvendo uma aplicação você não vai só codificar a sua aplicação você vai criar um
banco de dados você precisa de um banco de dados você precisa de um elemento de mensageria muitas vezes você precisa subir alguns microsserviços que fazem parte da solução para você fazer um teste de integração por exemplo né então Putz teste de integração cara docker compose brilha porque você consegue montar eh todos os elementos necessários para você testar a integração do seu software Então você vai utilizar em ambiente ovimento você vai utilizar para automações de entrega em pipeline deci você pode criar um docker compose executar na pipeline deci para montar esse ambiente para você para você
fazer teste para você validar para você fazer teste automatizado para você executar um processo de build ou validação de código tudo isso você pode fazer também utilizando o docker compose aliado lá com a sua pipeline Você quer um conteúdo sobre esse sobre isso sobre pegar uma pipeline utilizar um docker compos para criar esse setup de ambiente para montar essa stack fazer essa integração Comenta aí embaixo coloca pipeline com docker que aí eh eu monto esse conteúdo a gente monta aqui esse conteúdo mas eu quero o feedback de vocês eu quero a participação de vocês coloquem
aí que a gente desenvolve esse material Certo ou você pode utilizar o docker compos simplesmente para montar um ambiente single host eu tenho uma máquina eh uma máquina virtual eu tenho aqui meu ambiente local e eu quero montar um ambiente para estudar para rodar uma aplicação para rodar ali algumas soluções você pode utilizar o docker compos para isso também inclusive se você tá estudando uma tecnologia nova e quer ali ganhar agilidade no estudo cara Dock compos ajuda muito você pode inclusive Depois eu mostro aqui para vocês mas você pode inclusive criar um catálogo de docker
composit Ah eu quero eh ter um setup de um WordPress quero ter um setup de uma elastic stack ou mong DB para poder montar os seus ambientes de estudo você pode criar um catálogo de dokia compos cada compose com uma stack ali específica E aí você tem sempre ali eh os arquivos com toda a definição do ambiente para você ganhar agilidade no seu estudo ou na criação das suas pox cara você tem um catálogo de de de compose e ajuda bastante assim como ter um catálogo também de terraform você ter esse tipo de coisa te
ajuda bastante eu tenho catálogo de tudo assim eu tenho catálogo de Doc compose catálogo de terraform de anb então assim eh ambientes que eu preciso subir ali constantemente para estudar para fazer Live aqui para vocês também e enfim eu tenho esses catálogos e me ajudam bastante certo mas um ponto muito importante também para você entender é que o docker compose ele tem duas versões diferentes tá muitas vezes a gente acha docker compose tá ali eu só tenho docker compose e na verdade eu tenho hoje duas versões é que eu posso utilizar eu tenho o docker
compose versão 1 e o docker compose versão 2 o docker compose versão 1 ele era um projeto apartado do da Engine do Doc apartado ele se do do docker nem nem foi a docker que criou né o docker compose inicialmente a o Dock a empresa Dock comprou adquiriu essa empresa até depois mas eh Antigamente ele era um projeto escrito em Python então ele tinha uma performance menor não era integrado ao projeto E hoje nós temos o docker compose 2 que mudou um pouquinho a especificação n não muda tanto assim Mas ele tem algumas diferenças é
um projeto agora escrito em go e faz parte da Engine do Doc certo então para você saber qual que você tá utilizando você pode fazer o seguinte deixa eu compartilhar aqui a minha tela né você pode fazer o seguinte você pode executar aqui ó docker compose eh version aqui ó dessa forma primeiro você tem que ter o docker rodando né no seu ambiente deixa eu abrir aqui eu tô com o docker desktop instalado aqui na minha máquina mas você pode utilizar Dock desktop você pode utilizar o Dock Engine instalado no Linux no Mac não tem
problema nenhum e é importante deixa eu ver se tá habilitado aqui o integração não estava Beleza então para você testar você bota aqui ó docker compose version e ele mostra aqui para você ó versão 2.2.6 desktop 1 se você reparar é o docker comp um ele era utilizado dessa forma aqui ó docker traço comose né Deixa eu até ver se ele funciona aqui ó version aqui no caso ele tá utilizando a versão dois mas é muito comum quando você executar dessa forma você vê que ele tá utilizando ali a versão um E aí quando você
executa e docker com pos version assim separado ele aparece a versão dois no caso aqui como eu tô utilizando o docker desktop ele já instala para mim a versão dois se você tá utilizando as versões mais recentes do Dock Provavelmente você já tem a versão dois faz esse teste docker compose version E aí você vê qual versão você tá utilizando certo aqui o que eu vou falar é o docker versão docker compose versão 2 certo e um ponto bem legal para você saber também que é uma curiosidade é que o padrão do docker compose ele
foi aberto pela Dock a docker normalmente abre né os padrões dela como foi com os o projeto Mob eh com como é com o docker compose e eles criaram né o que eles chamam de compose spec então a especificação do docker compose ela foi aberta e hoje qualquer projeto pode utilizar essa especificação na verdade diversos projetos utilizam a especificação do docker compose tem o site aqui ó compos tros speec Onde você consegue ver eh mais mais informações né E você consegue ver aqui ó inclusive dá para vir aqui ó no github E aí tem aqui
ó a compose o compose spec certo tem aqui também bibliotecas que te ajudam a implementar e tal eh vale a pena dar uma olhada tá então aqui ó se a gente vir aqui embaixo na documentação ele mostra a especificação e tal eu acho Ah tá aqui ó aqui embaixo ele mostra inclusive projetos que izam essa implementação então aqui ó o docker compose Claro né Ele utiliza essa especificação tem o compose com K também que utiliza a especificação do compose spec o nerd CTL octeto stex o docker cloud integration E também o podman compose então isso
ajuda muito na hora de ter compatibilidade entre ferramentas acaba que esse esse modo de criação do comp você pode utilizar em diversas ferramentas certo eu inclusive já utilizei com o nerd CTL e é junto com o contêiner de funciona de boa você pode testar isso também certo bom dito isso né Vamos agora para botar a mão na massa Quero mostrar isso aqui para você Quero mostrar o compose para você mostrar como ele funciona como é que a gente pode trabalhar com ele aqui metendo a mão fazendo aqui né passo a passo e a gente e
evoluindo aqui eh o projeto certo eh deixa eu abrir aqui o meu vs code eu tenho aqui um projeto que a gente vai utilizar depois que vai ser inclusive o projeto de referência eh da nossa aula de sábado do nosso workshop mas a gente vai falar sobre aí daqui a pouquinho mas vamos criar agora né o nosso primeiro arquivo de compose como eu disse o docer compos aí trabalha com padrão emo então eu vou criar um arquivo eemo aqui para trabalhar normalmente quando você trabalha com a versão um do docker compose normalmente o padrão de
nomenclatura era assim ó docker troc compose pemo ou IML Ou yml certo ou um ou outro Eu normalmente coloco aqui e amo tá Eu normalmente coloco dessa forma esse aqui é na versão 1 mas hoje na versão dois normalmente se usa assim ó compose pemo ou yml eu boto aqui emo pô Fabrício mas o docker trose pemo funciona funciona eu tô falando aqui a versão nova o padrão de nomenclatura novo então é importante você saber mas docker trç compose funciona eh compose pemo também vai funcionar certo Eh agora um ponto muito importante Normalmente também na
versão um quando a gente criar começava a criar o nosso compose e precisava colocar aqui o version né a versão do compose que a gente I utilizar E aí normalmente colocava aqui 3 2 3.8 3.9 colocavam aqui né várias versões diferentes isso aqui você pode colocar pode não tem problema nenhum mas o compose 2 ele ignora essa parada então né aqui a gente tá falando sobre o compose 2 vamos tirar esse Esse Cara você não precisa definir o version aqui no compose certo então agora que que a gente vai fazer aqui eu vou criar um
contêiner simples eu quero criar um contêiner mapeando a porta 8080 da minha máquina local com a porta 80 dele fazendo um p bind aqui eh pra pra porta da minha máquina local se você tá com dificuldade aqui porque você tá dando os primeiros passos com docker você tá começando com doc não tem problema fica aqui comigo Assiste esse conteúdo e depois você pode assistir outras aulas mais básicas caso você precise para você entender os conceitos inclusive me conta me conta aí no chat me conta na na aqui no nos comentários Qual o nível de conhecimento
de docker que você tem se você é Dock básico iniciante se você é avançado Coloca aí e se você tá dando os primeiros passos rel aa Pode ser que algumas coisas que você não pegue de cara mas relaxa você vai visitar ali depois outros conteúdos aqui do canal inclusive vou colocar a Playlist de docker maneira aqui para você aqui embaixo e assiste lá depois que você vai ver que vai ficar muito mais claro aqui certo eu não vou entrar nos conceitos mais básicos do Dog mas o que que eu vou fazer aqui eu basicamente né
eu vou fazer o seguinte eu vou criar aqui né um compose que substitua o Esse comando aqui ó docker container Run fazendo aqui o menos p 80 80 e criando aqui um coner certo a gente vai fazer isso a gente vai deixar de executar Esse comando e criar um arquivo para fazer esse processo para mim então o primeiro ponto aqui é declarar esse contêiner declarar que eu quero criar esse contêiner toda a declaração de contêiners no compose elas ficam aqui dentro do campo Services sempre que você vê aqui no compose esses Services eles são os
contêiners que vão ser criados aqui dentro do da minha spec tá então aqui dentro de Services você vai declarar todos os seus contêiners beleza e aí todo service né todo contêiner aqui que você vai criar representado no service ele tem que ter um nome então aqui eu vou botar o nome de o web vou montar aqui um um web application uma aplicação web então vou deixar aqui como web certo e declarei aqui agora eu preciso colocar todas as informações né de criação ali do meu contêiner tudo que eu faço no docker container Run né na
execução do comando eu tenho que colocar aqui seguindo o padrão emo então o que que eu vou fazer aqui eu vou declarar primeiro a imagem Todo o contêiner ele tem como base uma imagem então aqui eu vou declarar a minha imagem Então vou colocar aqui Fabrício Veronez certo vou botar aqui eh o resto da o nome da imagem web traço color galera que já acompanha o canal conhece essa imagem aqui uso bastante aí como exemplo então eu vou colocar aqui ó a imagem vai ser essa aqui e com a tag Blue né é uma aplicação
web com fundo azul você vai ver mas aqui eu declarei e a imagem certo só com isso aqui só com isso aqui eu já posso criar o meu contêiner eu já posso criar o meu contêiner com Dock compos vamos dar uma conferida vamos fazer isso aqui agora para criar o meu contêiner baseado no compose eu vou utilizar né aquele comando docker com eh compose certo vou utilizar o comando docker compose e como eu quero criar né todos os elementos que estão no meu compose eu vou utilizar aqui e o Up E aí eu executo ele
vai fazer lá ó todo o processo de criação do contêiner ele vai baixar a imagem que a imagem não tá aqui no meu ambiente e vai fazer aqui a execução Ó lá ele já tá executando ó ele já criou aqui a minha imagem só que ele travou o meu terminal se eu vir aqui e dar um control c ele vai matar né o container Mas eu posso junto com o Up passar aqui o menos D para ir executar em segundo plano aí ó lá ó ele cria para mim se eu vir aqui agora ó docker
container LS ah lá ó meu contêiner ele tá de pé ó lá eu tô com o meu contêiner aqui eh rodando só que cara esse contêiner ele tá rodando eu não consigo acessar ele por quê porque eu ainda não fiz o port bind né do do meu contêiner aqui da porta do meu contêiner com a porta da minha máquina então aqui né eu preciso especificar isso isso no docker container Run eu utilizo o docker container Run menos P para fazer o publish ou bind de porta aqui eu vou declarar o Portes certo eu vou declarar
as portas que eu vou utilizar e aqui eu posso colocar quantas portas eu quiser eu posso fazer o vínculo de quantas portas eu quiser seguindo né a o formato onde eu coloco a porta da minha máquina local junto com a porta do coner e eu fiz uma besteirinha aqui faz certo que dá certo então botei lá ó porta 80 80 a porta 80 do meu contêiner tudo certo vamos vamos em diante E aí o que que eu vou fazer eu vou deletar aqui esse contêiner e vou Executar a criação novamente nada disso que que eu
vou fazer eu vou executar de novo o docker comose up men D E aí o que que vai acontecer o docker compose ele vai ver que teve uma alteração no meu arquivo e emo e vai fazer ali A recriação lá ele vai criar novamente aqui eh o meu contêiner se eu executar ele aqui de novo ó lá ó ele não faz nada ele só diz ó tá em Running por quê Porque eu não alterei o meu arquivo emo então repara que ele trabalha justamente Como eu disse de forma declarativa eu declaro o meu arquivo de
Manifesto ele executa ali eu executo o docker container docker compose up e ele faz ali e a criação novamente para mim criando novamente a minha estrutura cara fala sério isso aqui é muito irado né fala sério você não precisa ficar preocupado você não precisa ficar preocupada em ficar recriando ali a sua stack o tempo inteiro Se eu colocar aqui local host 8080 tá lá ó ele cria aqui para mim o contêiner fez o port bind agora eu consigo acessar aqui e o meu contêiner acessar a minha aplicação quero mudar quero mudar a aplicação agora quero
mudar a versão dessa aplicação não tem problema que que eu vou fazer mudo aqui a imagem guin né executo aqui e o docker compose Up deixa eu dar um Clear aqui executo up ah lá ele vai fazer todo o processo de novo como a imagem não existe hoje aqui né na minha máquina ele vai baixar aí ele startou beleza se eu der um refresh aqui ó lá mudou ali a minha aplicação mudou ali o meu processo Então cara já consegui criar aqui o meu primeiro contêiner utilizando o docker compose e junto com o docker compose
aqui eu tenho alguns comandos né eu mostrei aqui o docker compose up que vai eh subir aqui Opa fiz besteira que vai subir aqui né com menos D vai subir a minha stack ní vai subir ali os elementos que estão no meu compose eu tenho também o docker compose Down que vai derrubar todos os elementos ali do meu compose certo eu tenho também o docker compose stop um docker compose Stop eu consigo eh stopar né parar um dos contêiners que fazem parte do meu compos E aí como é que eu faço boto o docker com
Stop Pego aqui o nome do meu serviço né que no caso aqui é o web e coloco aqui web a vai lá e vai parar o meuer se eu quiser startar de novo eu posso vir aqui e executar o start botando aqui web ele vai lá e starta para mim eu tenho também o docker compose logs Onde eu consigo ver os logs dos contêiners que fazem parte do compose aqui no caso só tem um né então se eu botar o logs aí vai mostrar todos no caso aqui só tem um vai mostrar um mas caso
eu queira ver um contêiner específico um serviço específico eu posso vir aqui e colocar o nome e aí ele vai eh mostrar aqui para mim nos logs então o comando o docker compos ele tem diversas opções interessantes aqui para você criar suu stack e verificar algumas informações tem também aqui o docker compose e PS onde ele lista aqui também todos os contêiners que estão rodando ali e daquele teu arquivo de compose certo então aqui eu tenho diversos comandos que vão me ajudar beleza bom legal a gente criou aqui né o compose Pô acabou vamos embora
né Aprendi os como comandos pá não vamos aprender mais coisa aqui e primeiro eu vou fazer aqui o seguinte vou botar o docker compose Down certo e aí a gente vai e derrubar aqui e eu vou fazer o seguinte agora a gente vai trabalhar com uma stack mais complexa a gente vai trabalhar aqui com o WordPress eu vou subir um WordPress aqui pra gente ver como ele funciona certo então vamos fazer aqui passo a passo né Eu vou matar esse cara e a gente vai criar aqui os contêiners do WordPress primeira coisa que eu tenho
que ter no WordPress na primeira duas coisas o WordPress ele é composto por dois elementos ele é composto por um banco de dados mas SQL e também pelo WordPress que vai ser a minha parte ali web e uma particularidade desses dois do WordPress é que o banco de dados Ele trabalha com volume eu preciso persistir ali as informações do banco de dados senão vou perder ali as informações se você já passou por isso de perder suas informações quando tá trabalhando com um banco de dados em contêiner quando tá trabalhando com persistência de informação com contêiner
cara Coloca embaixo Comenta aí embaixo eh é porque você não conseguiu trabalhar com o volume de forma correta com o Dock certo e é muito comum quem tá começando tá dando seus primeiros passos e ter dific na hora de trabalhar com volume inclusive hoje por acaso hoje eu regravei todas as aulas de volume de kubernetes eh da minha formação da formação de devops pro justamente porque eu sei que os alunos as alunas T certa dificuldade coloquei um material muito mais extenso para ajudar a galera a entender ainda melhor né Então galera da formação tá lá
só conferir Então cara e o o o entendimento de volume ajuda muito você a criar aplicações realmente de grande porte escaláveis da maneira correta para não perder as informações né muita gente acha que ah não dá para trabalhar com persistência de dados em contêiner dá você que não sabe trabalhar da maneira correta então não tem nada de errado com isso mas você tem que aprender para você se diferenciar certo isso e outras coisas do do container mas volume é algo que realmente eh a galera tem muita dificuldade certo então e aqui também no canal tem
material sobre sobre volume eu vou colocar embaixo vai tá na playlist tá de dock então se você não tem dificuldade com isso Relaxa assiste lá o vídeo depois então vamos lá e eu vou criar aqui o contêiner né o serviço que vai ser o meu banco de dados Então vamos lá eu vou botar aqui o banco MySQL certo vou declarar aqui o meu MySQL e eu vou colocar aqui todas as informações do MySQL Vou botar aqui a imagem né E aí eu vou botar a imagem my SQL seguindo a boa prática do docker eu vou
fazer o seguinte eu vou procurar aqui né no dockerhub hub.docker.com eu vou colocar aqui eh qual é a imagem mais recente do mql eu vou pegar a versão da imagem que eu vou utilizar poderia utilizar um Maria DB também não tem problema nenhum não tá poderia utilizar sem problemas mas aqui eu vou hoje eu vou utilizar aqui o MySQL aqui ó 8.3.0 certo então vou colocar aqui né e mais 8.3.0 e eu já vou colocar aqui as variáveis de ambiente certo que são o as as configurações que eu preciso definir de usuário senha banco de
dados que vai ser criado para poder criar da maneira correta o meu banco de dados aqui eh no meu ambiente de contêiner então eu vou declarar aqui dessa forma no environment normalmente como é que você faz isso no docker você vai lá docker container Run menos e coloca lá o nome da variável e seta o valor aqui eu vou definir o environment aqui a gente tá pegando o comando e transformando em emo então vou fazer dessa forma Então vem aqui environment beleza e eu vou pegar aqui os parâmetros galera eu vou pegar aqui uma colinha
que eu tenho tá para não fazer besteira né colocar aqui os valores corretamente tá E esses valores estão aqui na documentação dá para você ver aqui na documentação da imagem certo então tá aqui cadê cadê cadê Aqui as imagens tá aqui ó as variáveis cente eu tenho aqui ó mycell root password que é a senha do Rot o mycell Database que é o nome do Database que vai ser criado o mycell user e o mycell password né que é o usuário e a senha eu aqui no caso só peguei aqui da colinha para não ter
problema certo ah vou colocar aqui eh deixa eu colocar aqui senha 1 2 3 4 dessa forma E aí beleza esse cara aqui vai ser o meu MySQL certo acabou n Já criei aqui não vou fazer o seguinte eu vou utilizar aqui eh o port bind né E vou colocar aqui a a porta 3306 com a 3306 para eu poder acessar Aqui o banco de dados ver se ele tá criando tudo direitinho e eu não precisaria fazer né já que quem vai acessar o banco é o é o WordPress mas aqui eu quero ver lá
as informações ver se tá tudo certinho certo e agora beleza se eu rodar aqui dessa forma né dessa forma aqui ele vai funcionar vai rodar o banco de dados numa boa mas que que vai acontecer caso o meu contêiner seja eliminado eu vou perder as informações sabe a falha de quem tá começando com o DOC que perde as informações porque não setou o volume Pois é eh isso iria acontecer aqui aqui comigo então eu não posso deixar isso acontecer eu tenho que declarar o volume eu tenho que declarar que eu vou utilizar um volume para
poder eh não perder as minhas informações aqui no caso eu vou trabalhar com o volume gerenciado pelo Dock poderia ser um volume bind para vincular eh o o o conteúdo do diretório e um diretório da minha máquina local poderia poderia colocar aqui o volume bind ou o gerenciado eu quero trabalhar com o gerenciado né onde o docker gerencia o volume para mim e para isso no docker compose eu tenho que Declarar no meu arquivo emo assim como eu tô declarando os contêiners aqui como service eu tenho que declarar o volume como volumes certo eu vou
declarar aqui os volumes que eu vou utilizar beleza aqui eu botei aqui em cima mas pode ser aqui em cima Pode ser aqui embaixo não tem problema eemo ele não tem esse problema em relação à posição é mais a identação né A Hierarquia aqui entre os campos certo então vou declarar aqui o volume eu vou colocar o nome do meu volume que vai ser DB und eh blog certo dessa forma aqui e aí né declarado aqui o meu volume beleza não preciso de mais nada o docker compose Ele já sabe que ele tem que criar
um volume para mim certo e aí com esse volume declarado eu tenho que mapear aqui no meu contêiner E aí eu vou fazer isso utilizando o volumes também E aí eu vou pegar o nome do volume colocar aqui e vou mapiar qual vai ser o diretório dentro do meu contêiner que eu vou mapear no caso para eu não perder as informações eh do do meu banco de dados eu vou utilizar o Barra var bar Lib bar mys que é o diretório padrão certo então aqui Vou definir aqui o volume tá tudo certo eu vou conseguir
agora trabalhar da maneira correta poderia já subir esse cara poderia mas eu vou aqui já criar o do WordPress pra gente subir tudo de uma vez Beleza então aqui eu vou botar WordPress pra gente subir o contêiner o serviço do WordPress e aqui mesma coisa Vou definir a a imagem e aí eu coloco né o WordPress e aqui eu vou colocar a versão né da imagem né a tag da Imagem e eu venho aqui né WordPress Beleza vou pegar aqui e agora eu tenho a tag que eu vou utilizar deixa eu pegar a tag aqui
enquanto se eu bebo uma água também Beleza deixa eu baixar aqui caramba só tem versão Beta aqui né brother deixa eu pegar aqui nossa só tem versão Beta Eita Beta agora eu acho que ten aqui alguma versão final não só Beta também Ah vamos ver aqui deixa eu ver aqui mais pra frente seai ah PHP 8.3 não Beta 6.5 cara deixa eu procurar aqui 6.5 ele só tem aqui em Beta eu vou botar 6.4 para ver se ele aparece aqui alguma versão final Ah 6.4 beleza vou botar aqui 6.4 PHP é 8.3 esse carinha aqui
vou eleger esse cara aqui ah deixa eu ver se tem alguma ah tem aqui ó 6.4.3 assim puro vou botar esse aqui tá fic mais fácil Beleza então definir aqui a versão agora que que acontece aqui novamente eu tenho que fazer as configurações de ambiente eu tenho que definir eh as informações do banco de dados né os dados de acesso ao banco de dados eu tenho que colocar aqui eh qual vai ser o host do banco de dados qual o endereço do banco de dados então a aqui eu tenho que botar variável de ambiente também
de novo isso tem aqui na documentação se eu pegar aqui em overview se eu descer aqui vamos dar uma olhada aqui ó tem todas as configurações que eu posso utilizar tem até mais configurações que eu posso definir aqui no WordPress tá no caso só vou botar aqui as informações do banco de dados mesmo então de novo eu vou pegar aqui da colinha tá bom galera para a gente não ter problema em relação Ah fazer cagada aqui no na hora de digitar vou colocar aqui beleza Eh eu só vou mudar aqui o nome do banco que
no caso aqui ó eu botei Eh tava DB blog Vou botar aqui MySQL e o nome aqui né do do banco do host vai ser o nome aqui do meu service que aí dentro no compos aí consegue resolver o nome para poder acessar o meu contêiner beleza bota aqui a porta 33 06 e tá tudo certo ao usuário e a senha também aqui tá certo eh o banco de dados ele por padrão ele já vai no WordPress mas eu tenho como definir aqui também Cadê a variável ah cadê Aqui ó table prefix ah cadê Aqui
a configuração do banco de dados aqui ó DB name eu poderia definir aqui o nome do banco de dados tá po até colocar aqui vai vamos vamos colocar aqui tá ficar bonitinho Eh dbname aí eu vou colocar aqui né WordPress para ficar certinho então beleza Tá aqui WordPress né Eh setei aqui as variáveis de ambiente Agora falta eu definir o volume também por quê Porque o WordPress ele persiste a informação algumas informações no banco de dados né as os os posts usuário e comentário tudo aí coloca lá Mas ele tem alguns alguns arquivos né arquivo
de plugin eh arquivos de tema né os temas que são utilizados tudo isso eh ficam persistidos também em um sistema de arquivos do WordPress aí coloca isso em um diretório eh específico então aqui eu tenho que definir um volume também então eu vou vir aqui ó Vou definir volumes mas aqui em cima eu tenho que definir um volume també E aí eu vou colocar aqui o volume como WordPress né und vol certo coloco aqui dessa forma Opa coloco aqui n WordPress Wall E aí eu mapeio lá pro diretório para não perder os arquivos eu boto
aqui barra var barra www Opa bar HTML dessa forma aqui certo e aí é outro ponto que eu também não fiz né eu não mapeei as portas né a porta da minha máquina local com a porta e do contêiner então boto aqui o pce porta 80 80 com a porta 80 do contêiner que por padrão e roda na porta 80 certo beleza e agora Faltou um ponto muito importante eu mapeei o volume né aqui do banco de dados mapeei aqui o volume do WordPress mas faltou a rede né faltou eu declarar aqui a Network que
vai fazer a comunicação entre esses dois contêiners aqui então mesma coisa eu declarei volume declarei os contêiners e eu teria que declarar aqui ou melhor eu tenho que declarar também aqui as Networks né eu tenho eu teria que eu não teria que criar aqui docker e Network que Create conectar todos esses caras aqui eu tenho que fazer a mesma coisa mas eu vou fazer o processo utilizando arquivo eemo Então vou pegar aqui Networks e vou criar aqui a minha Network Vou botar aqui eh WordPress und net botar aqui esse nome e aí eu defino agora
o driver Opa defino aqui o driver que vai ser o BD certo dessa forma aqui e eu tenho também né que botar esse contêiner na Network declarando aqui as Networks que vão est sendo utilizadas pelo contêiner ou pelos contêiners então coloco aqui beleza copia aqui coloco aqui legal agora ele vai funcionar certo faz certo que dá certo gente faz certo dá certo se eu não colocar isso aqui ia dar ruim então agora que que eu vou fazer vou vir aqui e vou executar docker compose up men D executa e vai fazer o processo vou beber
uma água enquanto isso E aí vai fazer aqui o processo enquanto tá fazendo aqui Já pega aí dá um like no vídeo pro YouTube entender que esse conteúdo é de qualidade Vale a Pena Ser distribuído e também pega o link aí da Live se você Você tá assistindo a gravação também não tem problema pega o link coloca nas suas redes sociais me marca Fala galera tá rolando aqui ó um vídeo uma live maneira com Fabrício docker compose guia definitivo para você aprender a trabalhar com o docker compose porque além de trazer mais gente aqui pro
Canal ajudar o canal a crescer você aumenta a sua visibilidade porque você começa a mostrar nas suas redes sociais pros recrutadores pras recrutadoras pra galera da sua equipe que você tá se aprimorando que você tá se desenvolvendo como profissional Você tá estudando não é só aquele papinho furado de que ah eu sou esforçado tá você é esforçado você é esforçada prova tá aí ó prova agora pega aí o link compartilha nas suas redes sociais e Fala Galera tô me aprimorando aqui aprendendo docker e tal coloca lá e me marca que eu dou um dou um
like lá vou interagir também beleza show de bola então rodou aqui vamos dar uma olhada docker compose LS ou PS aqui ó ele vai listar para mim Eu posso também vir aqui docker container Ls e ele vai listar aqui e os contêiners para mim beleza então em teoria Tá tudo funcionando vamos pegar aqui né aqui vamos ver local host 80 80 tá lá ó ó lá até funcionou funcionou ó faz certo que dá certo não tem ko não tem ko Funciona Ah então vou fazer aqui o setup Brasil paná n botar aqui um site site
eh xpto certo nome do usuário Fabrício Veronês a senha eu vou botar aqui uma senha difícil de lembrar ó do 6 4 5 6 senha fraca vou usar mesmo vou botar aqui qualquer e-mail fabríci Veronez @ teste.com.br instala WordPress e vai fazer todo o processo para mim agora eu posso acessar E aí beleza se eu virar aqui agora no link tá lá Ele criou aqui o site para mim á eu já tenho aqui um site inicial certo se eu derrubar aqui tudo que que vai acontecer Dock compose Down se eu tirar aqui ele vai sair
né vai sair beleza mas ó tá fora mas se eu rodar aqui de novo se eu rodar aqui ele cria para mim se eu atualizar ó lá ó voltou então eu já consigo olha só que legal com arquivo olha olha a quantidade de etapas que a gente fez aqui criando arivo e o quanto a gente economizou de tempo e esforço utilizando o arquivo de compose eu criei um dois volumes criei dois volumes então teria que utilizar l o comando docker volume Create duas vezes teria que executar o docker Network Create também e teria que executar
o docker container Run duas vezes um para o MySQL e outro pro WordPress tendo que passar todos esses parâmetros aqui variável de ambiente volume porta e tudo mais e se eu quiser agora deixa eu abrir aqui ah eu não tenho el aqui instalado Olha que legal não tem problema eu instalo aqui agora vou instalar aqui o de beaver né que é o banco é um banco é uma ferramenta para acessar banco de dados né Eu não tenho ele aqui não tem problema eu formatei recentemente aqui a minha máquina el tá aqui ó rodando instalando tá
lá ó tá rodando aqui aí tá baixando E aí vamos dar uma olhada aqui ó ele tá fazendo a instalação Beleza vou abrir aqui aí Abriu aqui na outra tela tá abrindo aqui Ah beleza não tá de fechar aqui beleza agora vem aqui ó eu vou conectar o masl e vou colocar aqui ó local host e tal vou pegar aqui o meu usuário usuário user blog tá aqui ó o user blog vou pegar aqui a minha senha pwd blog certo Ah aqui ó WordPress o Database beleza e aí eu vou fazer um teste de conexão
vai fazer aqui o download vamos ver Ah lá conectou se eu concluir aqui e já entrar aqui ó banco de dados WordPress tabelas ah lá eu já consigo acessar Aqui o banco de dados porque eu fiz o port bind né fiz aqui o port bind eh com a porta da minha máquina local e aí funciona de boa se eu tirar aqui né se eu tirar aqui ó vou botar um vou comentar aqui se eu rodar de novo se eu rodar de novo aqui né ele vai recriar aqui ó ele vai recriar aqui e o contêiner
certo e aqui eu vou perder a conexão mas eu não perco as informações ó lá não consigo conectar mais mas eu consigo ó rodar a aplicação a aplicação tá funcionando tá vendo por quê Porque eu tirei aqui o mapeamento se eu quiser voltar eu volto aqui subo esse cara ó lá ele vai recriar aqui todo para mim e agora eu vou ter a conexão novamente Opa deixa eu dar um refresh aqui eu abro aqui Opa ah ah tá a configuração aqui do da conexão posso vir aqui ó cadê Aqui aqui eu boto dou um ok
E aí beleza ó lá aí eu consegui conectar novamente irado né muito irado e o legal também é que vamos imaginar o seguinte cara aqui eh eu tenho aqui todos os parâmetros né da minha solução eh fixos aqui no meu no meu arquivo no meu arquivo iemo então Putz se eu quiser compartilhar essa stack com alguém da minha equipe ou se eu quiser colocar aqui algum dado sensível alguma alguma senha realmente sensível cara eu vou ter um problema porque Putz eu tô rodando esse eu tô colocando aqui tudo hard code se eu subo isso para
um repositório Git se eu subo isso para algum lugar qualquer pessoa vai ter acesso aqui a esses parâmetros a esses dados aqui certo mas eu posso trabalhar com variáveis de ambiente eu posso ao invés de utilizar dessa forma eu posso colocar aqui ó dessa forma aqui ó deixa eu só pegar aqui ó posso vir aqui ó e colocar dessa forma né Eu só não vou botar mais k para não ficar igual tá mas eu vou botar aqui ó por exemplo DB password certo e aqui eu vou botar ó DB eh Database botar aqui ó Database
Ah deixa eu pegar aqui mais para baixo botar aqui DB user vir aqui e botar DB password certo dessa forma aqui e deixa eu tirar esse carinha daqui e aqui embaixo Como são os mesmos valores eu vou colocar aqui ah no caso do Ah deixa eu botar aqui no caso aqui né eu vou botar o Rot né senão dá ruim beleza e aqui eu vou botar o DB Database que aí eu coloco aqui aqui no caso eh o DB e user Vou botar aqui a mesma coisa DB peo aqui a mesma coisa E aí eu
consigo parametrizar né O meu a criação aqui do meu ambiente poderia colocar aqui também a versão da imagem tag da Imagem e por aí vai dá para fazer aqui eh diversas configurações diferentes e aí para passar essas configurações eu posso vir aqui e criar um arquivo pon env E aí esse arquivo eu não subo pro controle de versão não subo lá pro github e pro gitlab esse arquivo fica comigo e aí eu posso fazer dessa forma deixa eu pegar eu vou pegar aqui eh novamente os valores tá deixa eu só copiar aqui e botar no
env E aí eu vou pegar aqui e deixar dessa forma dessa forma aqui né para definir tudo E aí a gente passa aqui todos os valores deixa eu pegar aqui de novo aqui da minha colinha né aqui vai ser 1001 2 3 4 aqui vai ser WordPress user blog vai ser aqui e aqui vai ser o pwd blog dessa forma aqui então agora os valores eles vão ser definidos aqui eu posso vir aqui e executar docker compose botando aqui F se não engoa aí agora me deu branco não deixa eu ver aqui agora me deu
branco galera Caraca deu me deu branco aqui Deixa eu ver aqui ah file por isso que é bom conferir aqui sempre no helper então boto aqui ó ponto env coloco aqui up menos D executo e ó lá foi ah lá não mudou nada inclusive né porque eu já tava utilizando aqui então ele se Manteve el Manteve ali as configurações certo então passa aqui o en file e bota aqui o ponto env eu ia botar from file porque era quando você trabalha com squet no kubernet de vez em quando dá essas bugadas galera de vez em
quando dá essas bugadas né o o from file é é quando eu vou trabalhar com criação de Secret no kubernetes certo então você passando aqui o env file você passa o arquivo e aí você consegue eh criar aqui né de uma forma muito mais segura e parametrizável E aí você consegue pegar essa stack e compartilhar com diversas pessoas da da sua equipe legal bom show de bola agora eu vou fazer o seguinte eu vou deletar esse cara vou ver aqui ó docker comp Down certo deixa matar aqui e a gente agora vai fazer o seguinte
legal aqui a gente subiu né O um ambiente mas aqui eu tô trabalhando com contêiners já criados né eu tô subindo uma stack que putz vamos combinar já ajuda muito se você quer testar algo no WordPress ou até fazer um sistema que tenha integração com WordPress eu já fiz isso né do WordPress ter que de eu ter que fazer uma aplicação que se comunicava com uma API né específica do WordPress para fazer ali uma integração eu já fiz algo assim já ajuda muito porque você vai ter o WordPress ali e em pé vai poder codificar
de boa desenvolver Sem problema nenhum sem ter muitos problemas né E quando você terminar de utilizar derruba tá tudo certo isso aqui já ajuda muito né imagina cara criar mensageria criar banco de dados criar tudo isso Putz um arquivo comandinho pá subiu né mas quando a gente desenvolve aplicações quando a gente tá desenvolvendo aplicações grande porte quer trabalhar com com com Essas tecnologias eh eu vou vir aqui né e vou trabalhar direto com o meu código né eu vou utilizar o meu código para isso né eu vou codificar E aí eu ter um docker compose
para me ajudar a montar esse ambiente e também a rodar a minha aplicação cara é outro nível de produtividade a gente tá falando de um nível de produtividade aqui desenvolvimento e agora a gente vai para outro a gente vai pegar isso e integrar com o código que a gente tá desenvolvendo E aí eu já tenho aqui né um projeto que é o Cub News é uma aplicação escrita eh em nodejs certo é inclusive aplicação que a gente vai utilizar no workshop Sábado Certo e aqui eh eu vou né pegar aqui né e v utilizar esse
compose que tá criado o compose e o docker file tudo isso aqui eu tenho né para facilitar aqui a nossa vida o foco não é criar dockerfile e o docker compos aqui acaba que ele é muito repetido né É mcio com que a gente fez né só Ah tem uma novidade aqui que eu já vou explicar aqui tá mas eu tenho aqui né o a minha Network tenho aqui é o post gre certo aqui no caso eu não mapeei volume né porque é um ambiente de desenvolvimento então eu não quero ficar persistindo o banco de
dados o tempo todo então aqui eu tenho as variáveis de ambiente do post gre eu tenho aqui a criação da imagem né e eu tenho aqui um recurso que é fantástico deixa eu apagar aqui que depois a gente vai ver né A gente vai ver isso depois tá aqui de de intruso mas eu tenho aqui todo criado certo aqui ó o Cub News tem aqui a imagem tem aqui a porta mapeada e aí a gente vai rodar esse cara né vamos ver aqui eh Cub News certo e eu vou executar esse compose aqui tá docker
compose up men D ele vai fazer toda a criação para mim certo ah o recurso que eu falei que ia explicar esse recurso aqui aqui ó depend on que que ele faz toda vez que eu vou criar aqui o meu os meus contêiners aqui no no meu compose ele cria de uma forma aleatória né ele vai criar aqui ele pode criar aqui o Cub News primeiro pode criar o post gri não importa mas vamos vamos analisar aqui um pouquinho o Cub News ele depende do banco de dados para funcionar eu preciso do de dados rodando
para rodar minha aplicação então o depend Zone ele cria uma dependência entre os meus contêiners aqui da minha steack do docker compos Deixa eu beber uma água aqui certo então aqui eu com depend Zone eu crio essa dependência aí o que que vai acontecer ele vai criar primeiro né o post para depois criar o cubs o que você não pode fazer é isso aqui é botar aqui Putz o o post GR depende do CUB News aí vai dar ruim você não pode ter essa dependência cíclica né onde uma dependência depende da outra né ah lá
e cara ele tem aqui eu não consig ele não vai funcionar né então eu coloco dessa forma e aí vai dar bom certo vem aqui ó aí ele vai e cria aqui para mim ó e cria primeiro o post G para depois criar né o Cub News E aí eh eu tenho aqui se eu vir aqui cadê cadê cadê Aqui eu atualizando Agora eu tenho aqui a minha aplicação eu tenho a minha aplicação aqui Cub News E aí eu dou um novo post posso vir aqui ó botar um post e tal né colocando aqui e
aí ele vai criar aqui a o meu site de notícia e persistir as informações só que que acontece aqui cara aqui né quando eu tô trabalhando dessa forma que que acontece eu tô utilizando uma imagem já criada E aí Putz cara olha olha o BO olha olha a dor de cabeça Olha o trabalho que eu vou ter que ter aqui nesse desenvolvimento eu tenho que codificar né executar o docker Build para criar imagem e e depois utilizar aqui o compose para rodar a minha aplicação Mas eu posso fazer o seguinte eu posso declarar aqui no
próprio compose que eu quero fazer o build dessa imagem aqui para rodar o meu contêiner E aí eu coloco dessa dessa forma aqui ó eu defino uma regra de build e eu falo e aqui Lógico o que que eu utilizo aqui no build né no docker build eu tenho que passar a tag que no caso vai est aqui e eu tenho que passar também o contexto e o docker file então no caso aqui eu vou passar o contexto né qual vai ser o diretório que eu vou enviar pro meu docker Dimon para criar a minha
imagem que no caso vai ser aqui o Barra src né essa pasta que tá aqui com docker file e todos os meus arquivos do projeto e também pera aí src E também o meu docker file no caso vai ser o docker file mesmo certo dessa forma aqui então que que eu posso que que vai acontecer agora quando eu executar aqui o docker compose Up eu posso passar aqui também um parâmetro build e a aí ele vai fazer todo o processo de construção da imagem para mim E aí toda vez que eu alterar o código da
minha aplicação ele vai reconstruir a imagem e vai recriar o contêiner á vai fazer todo o processo aí tá recriando aqui e agora ele vai recriar certo vai recriar aqui né E se eu vir aqui utar a lá ó eu tenho a minha aplicação agora eu vou fazer o seguinte eu vou mudar o código vou botar um V2 aqui só para ficar é claro que a gente mudou o código vou pegar aqui vou vir aqui em views Ah qual é o arquivo mesmo deixa eu lembrar aqui ah tá aqui em headers Ah eu vou vir
aqui ó V2 né e vou executar de novo aqui o docker compos Up ele vai fazer todo o processo de reconstrução é importante eu sempre passar ali o parâmetro build né o o Build para ele poder reconstruir né e fazer toda a reconstrução aqui da Imagem e aí se eu vir aqui agora ó lá ó V2 irado né muito irada parada né eu consigo fazer o processo aqui de de construção né da minha imagem toda vez que eu tô desenvolvendo ali a minha aplicação então e não é só isso não tá eu posso simplesmente vir
aqui ó e executar docker compose build e ele vai lá ó fazer o Build de todas as imagens caso eu tenha mais de uma criada aqui certo e não só isso de novo não não para aqui eu posso executar ó o Dock Opa o Dock comose Push E aí ele vai subir lá a imagem lá pro meu regist então quando eu defino aqui o build eu posso eh executar um contêiner construindo a minha imagem eu posso simplesmente fazer o build da minha imagem com docker compose e eu posso fazer o push também cara olha quanto
isso me ajuda olha quanto isso me ajuda na hora de criar aqui trabalhar com docker compose me diz aí cara você tá vendo isso aqui cara isso não te bota em um outro patamar de profissional isso não te bota numa posição de realmente profissional que sabe desenvolver aplicações de grande porte que consegue desenvolver software com muito mais qualidade né poucos profissionais sabem esses pararar na o aqui cara não é todo mundo que sabe ess pararar na o aqui com compose não caso is te dá muito mais AG te dá muito mais facilidade te economiza muito
muito tempo certo é cara isso aqui é muito irado Cara isso aqui ajuda muito muito isso aqui te ajuda bastante no seu processo de de trabalho cara de desenvolvimento certo e vamos lá mas vamos lá não acabou ainda não último pulo do gato aqui último pulo do gato aqui que eu quero mostrar para vocês eh concordam comigo que esse processo de build aqui né esse essa etapa de build eu vou utilizar mais no desenvolvimento da minha aplicação né quando eu tô codificando E aí se eu quero utilizar esse compose aqui sei lá um ambiente de
produção ou Quero rodar isso num ambiente de homologação quero e utilizar em outros ambientes isso aqui né acaba que Putz não deveria estar aqui né porque eu só vou utilizar em desenvolvimento aí que tá eu posso fazer o seguinte eu posso criar dois arquivos composes diferentes certo dois arquivos compose colocar informações né complementares no no compose e fazer um merge juntar dois arquivos compose para executar ali e num ambiente para para subir ali a minha stack dessa forma aqui ó eu posso pegar aqui criar aqui ó compose trev pem certo e aí esse build aqui
essa parte aqui eu posso colocar aqui no compose Dev certo tem que botar o service aqui aqui eu tenho que declarar tá meu Services opa Services Posso até fazer o seguinte ah deixa assim assim já vai já me ajuda Então posso colocar isso aqui posso tirar esse cara E aí o que que acontece se eu executar dessa forma aqui docker compose up menos D build cadê ah deixa eu ver aqui ele já ó ele não faz o build Olha só você vê que ele não faz o e travou aqui ah não tá certo e se
eu executar aqui ele não faz mais o processo de build por quê Porque eu não ele não tem mais lá a etapa de build se eu pegar aqui agora cadê se eu botar aqui agora o três e rodar aqui á e não vai fazer nada ele não vai fazer nada por quê Porque a instrução de build já não tá mais aqui nesse arquivo tá aqui no Dev então o que que eu vou fazer aqui eu vou executar Dock compose E aí agora eu tenho que especificar quais arquivos que eu vou utilizar qual arquivo ou quais
arquivos eu posso utilizar um só eu passo aqui ó menos F E aí boto ó compose ponto iemo coloco aqui o outro arquivo compose e traço Dev pon iemo E aí coloco ó up menos D passando aqui o build executo ah lá aí agora ele vai fazer todo o processo novamente ele vai fazer o processo de build por quê Porque a parte de desenvolvimento eu coloquei num outro compose Eu desacople né eu criei aqui é uma separação do que que é ambiente de homologue vai homologue produção se você for rodar esse cara com o DOC
que suor e o ambiente de desenvolvimento certo então aqui ó eu fiz a separação de ambiente e aí eu quero trabalhar né com o meu ambiente sei lá de homologação Eu coloco lá de boa utilizando esse compos ou até Quero rodar um ambiente mais similar com de produção certo e aí a gente utiliza aqui essa separação você consegue botar o ambiente de desenvolvimento Fala sério É irado ou não é galera isso aqui foi ou não foi um aulão sobre docker compose cara é ou não é tem algumas cois tem mais detalhes sobre o docker compos
que você pode aprender mas cara esse guia aqui se você assistir essa essa aula aqui cara você vai dominar os principais recursos do docker compos brother com toda a certeza e aí tá fica aqui o meu convite certo para deixa eu votar aqui de novo fica aqui o meu convite para você colocar o lembrete cadê cadê aí cadê o nosso site Cadê Eta Ah tá aqui fica aí o meu convite para vocês para vocês participarem né do nosso workshop que vai ser pra galera da formação do devops pro eh onde a gente vai montar o
ambiente de desenvolvimento com o docker e vest code você vai ver que muita coisa que a gente utilizou aqui do docker compose eh você vai utilizar lá também e vai fazer muito mais sentido e vai explodir a tua cabeça quando você vê isso implementado no ambiente de desenvolvimento Então cara não deixa de participar desse workshop cara el tá muito muito irado certo então a gente vai só para soltar um spoiler aqui galera só pra gente falar um pouquinho que a gente vai fazer a gente vai montar o ambiente de desenvolvimento tá utilizando o docker containers
ou melhor Dev containers do vs code e a gente não vai só montar o ambiente de desenvolvimento vocês concordam comigo quem tá aqui comigo concorda comigo que se você tá desenvolvendo uma e você no momento em que você tá desenvolvendo ela você tá monitorando a aplicação que você tá desenvolvendo você vai desenvolver com mais ou com menos eficiência me diz aí coloquem aí você vai desenvolver com mais ou com menos eficiência quando você desenvolve e você tá monitorando ali a aplicação em desenvolvimento utilizando as mesmas ferramentas que vão ser utilizadas em você vai desenvolver com
mais ou com menos eficiência me diz aí com certeza com mais eficiência então nessa aula aqui nesse workshop a gente vai aprender não só a montar ambiente de desenvolvimento com contêiners mas a gente vai aprender também como montar esse ambiente de desenvolvimento tendo o Prometeus e o grafana para monitorar ali enquanto a gente desenvolve a aplicação Ou seja você vai codificar e monitorar ao mesmo tempo e além disso a gente vai utilizar outras ferramentas para análise da aplicação análise de código análise do docker file tudo isso cara 100% em containers Dock você pode ó promessa
que eu tô fazendo com você monta um ambiente aí pode ser sua máquina local VM e tal só coloca docker e vest code você vai conseguir desenvolver sem fazer nenhum setup adicional certo então galera não deixem de participar vai tá aqui tá aí no chat vai tá aí embaixo na descrição do vídeo e esse código que eu desenvolvi aqui com vocês que eu mostrei aqui para vocês vai tá aí também eh embaixo eu vou colocar na descrição do vídeo eh amanhã se você tá vendo aqui ao vivo amanhã vai est no ar lá eh se
você tiver vendo a gravação provavelmente já tá aqui e não deixa de de participar também né do devops for devis vai vou colocar o link aí também para vocês participarem certo show de bola pessoal bom galera era isso que eu queria mostrar para vocês eu Espero realmente que esse conteúdo tenha ajudado você a se desenvolver a dar mais um passo rumo à elite dos profissionais de ti e não deixa de dar um like no vídeo pro YouTube entender que esse conteúdo é de qualidade Vale a Pena Ser distribuído não deixa de compartilhar esse conteúdo nas
suas redes sociais e também não deixa de se inscrever aí no canal acionar o Sininho para você não perder mais conteúdo Porque toda semana tem conteúdo irado como esse certo galera um abraço eu espero você se você tá assistindo a tempo eu espero que você participe do workshop Lembrando que essa aula vai ser ao vivo e ela não vai ficar no ar certo então não deixa de participar e um abraço aí valeu