Salve, das Beleza! Continuando essa saga aqui no nosso módulo de Docker. Agora, vamos falar sobre a rede padrão que é criada ali entre os containers com Docker, que é o modo Bridge, ou a rede Bridge. Eu falei na última aula que esse modo acaba linkando os containers e fazendo o encaminhamento de rede. Então, como os containers vão ter IPs, a gente pode se comunicar com eles através dos IPs, que não é muito comum. Mas nós vamos ter um serviço de DNS que, através dos nomes dos containers, nós vamos conseguir fazer ali a comunicação. E a porta é a própria porta do que está rodando. Um detalhe muito importante nesse caso é que eu não preciso publicar porta para que os containers se comuniquem. Se eu tenho lá uma SQL que está rodando com a 3306, eu não preciso expor a porta, é só usar a porta lá na sua aplicação Node, Java, PHP, etc. Então, bora brincar aqui com essas redes. Para a gente poder criar essa rede do modo bridge, vamos aqui para o terminal. Deixa eu ver se eu tenho alguma outra coisa rodando aqui só para evitar qualquer problema. Então, nós temos o comando network create e vou criar aqui um my network a network já existe então vamos aprendendo a trabalhar com a exclusão sempre a gente tem ali um rm network então vou criar aqui minha network então esse aqui é a identificação dela aí agora na hora que eu vou habilitar um container Então, esse aqui é a identificação dela. E agora, na hora que eu vou habilitar um container numa rede, vamos supor que a gente queira rodar aqui o MySQL, por exemplo, eu tenho o comando aqui do MySQL, eu não vou trabalhar com volume nesse capítulo. Não tem necessidade. Então, aqui, para trabalhar com a network, a gente passa myNetwork igual a myNetwork. Que é a rede que a gente criou ali. Então, a princípio, a gente não tem nenhuma mudança, mas esse container já está dentro dessa rede e nós podemos fazer aqui, vamos fazer um docker ps, eu chamei ele de MySQL. Então, eu consigo fazer um inspect mais MySQL, se eu fizer um grep ip address, está aqui o IP desse container nessa rede. Esse aqui é o IP dele. Por isso que eu falei que muitas vezes você vai encontrar um 7217, mas aqui também tem a questão do WSL que está envolvido. Então, esse aqui é o nosso IP. Beleza, então se eu estiver rodando agora uma aplicação Node, Agora, uma aplicação Node. Então, vamos criar aqui um name Node 1. Aí, vou colocar Network. E aqui, Node 2.20 Slim. Aí, vamos habilitar aqui, menos menos init, menos menos it, para colocar o bash aqui no final. Na verdade, já existe um container com esse nome. Aí a gente faz um remove dele aqui. Então, vamos rodar o container. Beleza. Ele está também na mesma rede, inclusive a gente pode fazer um inspect node1. Está lá o pp3, está acrescentando aqui nesse caso. Como que eu consigo saber se eu consigo acessar lá o outro container? Vamos fazer aqui um apt update e apt install ip utils traço ping, porque não tem ping aqui nessa imagem do node. A gente instala o ping e aqui nós vamos poder pingar o endereço. Então, se eu pegar aqui mysql, você vê que eu estou pingando lá para o 1922, então eu consigo me comunicar. Então, se eu quisesse pegar minha aplicação aqui Node para poder comunicar lá com o banco, bastaria colocar não é localhost, porque lembrando, cada container é como se fosse uma máquina, então localhost não sai ali daquele container, vai ser mais SQL mesmo na porta 3306. Não precisa publicar porta para o nosso contexto global. Isso precisa ficar bem claro na nossa cabeça. Então, com docker run a gente consegue fazer isso muito bem. E se a gente quiser utilizar num Docker Compose da vida? Vamos parar... Deixa eu fazer um Docker Stop. Eu não sei se eu já mostrei ele. Eu tenho um alias aqui, que é o Stop fazendo o PS menos a menos que é o que eu mostrei lá atrás. Então, eu faço esse Docker Stop aqui, ele para tudo. A gente tem a aplicação Node aqui. Esse aqui é um bom docker compose para que a gente possa utilizar. Vamos pegar todos esses arquivos, pegar toda essa galerinha aqui e aí eu torno esse 02-rede-bridge uma pasta, vou colocar isso aqui para dentro, aí eu vou transformar aqui no readme, e copio os arquivos para cá. Então, nós temos aquele Docker Compose que inclusive tem lá a questão dos limites, mas tem uma aplicação Node, o Nginx, que está servindo como proxy reverso, e o banco de dados. Como que eu faço para usar aquela My Network aqui? Lembra que volumes também a gente habilitava aqui no final do arquivo? Poderia ser no começo também, mas tanto faz. Então, networks também a gente faz dessa forma. Eu coloco networks aqui. E aqui vai My Network. E eu vou falar que é uma rede externa. A gente criou ela ali de forma manual. Ela não está sendo controlada aqui pelo próprio Docker Compose. Então, ao colocar isso aqui agora, eu tenho que ir em cada um dos containers e falar que eles vão usar essa rede. Então, em cada um deles, nós habilitamos networks e aqui vai my network. Um container pode fazer parte de várias redes. Então, o network, ele acaba sendo um array, eu posso colocar traço e colocando 500 redes se eu quiser. Então, a gente vai replicando, porque a questão aqui agora, quando eu estou trabalhando com essa rede habilitando no container, todos precisam se comunicar, todos precisam estar na mesma rede. Então, vou colocar o network aqui. Beleza. Então agora vamos entrar no capítulo 7, aula 2. E aí, nós vamos rodar o Docker Compose. Acho que está tudo ok, né? Se eu não errei nada ali, ele já vai até aqui o banco de dados. Tem o health check que eu tinha colocado. Então, ele vai demorar um pouquinho para poder subir. O que tem dentro desse arquivo? Aqui já vai acontecer o problema. E aí eu poderia habilitar aqui um volume para poder fazer a modificação, mas ele vai acabar rodando logo de cara o servidor em torno de antariana. Mas aqui, está certo, eu estou com o nome MySQL na minha cabeça, aqui é DB, não, está certinho. Então, o banco de dados subiu aqui, daqui a pouco o Nginx deve subir. E a gente já vai ver aqui um resultado do próprio Node. Na questão aqui da rede também tem outras configurações que a gente pode passar, a gente vai entender um pouco melhor sobre isso na hora que... Meu help check também está muito grande, mas eu vou esperar. Pronto, então nós temos aqui ele se comunicando, inclusive deu aqui a resposta do Node, tem ali o Nginx. O Nginx está rodando na porta 8000, então a gente pode chegar aqui só para ser em cargo. Na verdade, 8080. Está lá o Hello World, então está funcionando, ele conectou no banco de dados. Na verdade, 8080. Está lá o Hello hoje. Então, está funcionando, ele conectou no banco de dados. Então, nós temos uma rede habilitada entre os nossos containers. Mas a questão é que o Docker Compose já cria uma rede entre eles. Isso aqui não é necessário. Isso aqui não é necessário. Vamos pegar aqui... Esse Docker Compose e vamos fazer o seguinte. Eu vou acabar fazendo um DAW para ele poder matar tudo. Nós vamos ver uma informação muito importante quando, na verdade aqui eu vou deixar comentado mas vou comentar aqui e vou comentar aqui também pronto, então agora quando eu rodar um Docker Compose vamos fixar aqui e vai ter uma informação importante que é uma network criada é cuidado com esse rede bridge que não é o nome do docker é por causa da minha pasta ele cria uma rede chamada de default que já já é uma rede que, por padrão, já fica compartilhada entre os containers, ou seja, eles já ficam na mesma rede. Então, eles vão conseguir se comunicar. Por isso que a gente não precisa fazer essa especificação. Agora, o que acontece é que se você especifica essa rede e coloca ela nos containers, aí o Docker Compose entende que você que está fazendo a manipulação, então ele não cria e vai exigir, claro, que você coloque essa network em todos para que eles possam se comunicar. Mas a conveniência, justamente porque o YAML fica menor e ele já está criando automaticamente e destrói essa rede sempre quando você faz um DAO também. Então, criar essa rede aqui de forma manual, como a gente criou, qual seria a vantagem dela? Isso aqui tem que ficar muito claro. Se você está rodando uma outra leva de containers com outro Docker Compose, tem uma outra rede bridge isolada dessa que está rodando aqui no momento. Então, esses containers não conseguem se comunicar. Para que você consiga fazer essa comunicação, aí é necessário criar uma rede entre eles. aí é necessário criar uma rede entre eles. Então, eu poderia usar essa rede externa para poder fazer essa comunicação, ou eu posso pegar uma rede já criada automaticamente com o Docker Compose e jogar no outro como externo. A gente não tem a rede que vai ser... Como é que ele criou aqui? Ele criou com esse nome, né? Eu pego ali o nome da pasta e coloco underscore default. Então, lá no outro Docker Compose, se eu fizer isso aqui, esse aqui eu não precisaria de colocar networks nenhum, e aí lá no outro eu coloco isso. Em networks eu vou colocando o nome dessa rede. Beleza. Então a gente consegue fazer essa comunicação entre Docker Composes diferentes. Isso é muito importante. Não acho que você estava dando vários, ele vai isolando redes entre esses containers. Maravilha, pessoal. Então vimos aqui o uso dessa rede Bridge que é o padrão entendemos ali que é possível usar no RAM e também no Docker Compose então vamos evoluir nossa saga é isso aí e até a próxima