Simplificando o Docker — parte 3

Até agora nas partes anteriores (1 e 2), construímos um container e conectamos via SSH nele e depois construímos um container com base em um Dockerfile.

Agora vamos fazer 2 containers se comunicarem, lógico que na “gambis” primeiro, ou seja, vamos usar o que já sabemos.

Vamos criar 2 containers de PHP baseado em Dockerfile. Crie o seguinte Dockerfile em um diretório “01” que é o diretório do servidor:

from php:7.4-apache

COPY ./index.php /var/www/html/index.php

RUN service apache2 start

Agora vamos criar o index.php no mesmo diretório com o conteúdo abaixo

<?php

echo ((int) file_get_contents(“http://192.168.0.117:9002")) + 10;

Legal, vimos que:

  • escolhemos a porta 9002 para o servidor
  • Vamos estar dentro do container, então não devemos pensar no localhost (127.0.0.1) da estação. Este IP 192.168.0.117 da minha máquina. Use o da sua por favor

Quanto ao script, é super simples. Ele pegará o conteúdo que o servidor fornece e somará 10.

Vamos para o consumidor. Suba um diretório, crie um diretório 02 e entre nele. Neste diretório crie um Dockefile com o conteúdo abaixo:

FROM php:7.4-apache

COPY ./index.php /var/www/html/index.php

RUN service apache2 start

Legal, citamos o index.php. Vamos colocar o conteúdo abaixo nele. Só isto mesmo, sem abrir a tag <?php:

50

Vamos em cada diretório fazer os “builds”, ou seja construir as imagens:

> sudo docker build . -t consumidor

> sudo docker build . -t servidor

Em cada diretório, hein. Se quiser ver as imagens, dê um “sudo docker images”.

Vamos dar um “run” no consumidor com o comando abaixo:

> sudo docker run -d -p 9000:80 servidor

Deverá ser mostrado o conteúdo abaixo no navegador, referente a o que o servidor fornece:

Legal, o servidor está funcionando. Vamos fazer o “run” do cliente:

> sudo docker run -d -p 9002:80 consumidor

Podemos ver que 2 container estão rodando com um “sudo docker ps”

Funcionou mesmo? Vamos fazer um “kill” do cliente:

>sudo docker kill ef03e43d3d3a

Este “ef03e43d3d3a” eu peguei do “docker ps” (CONTAINER_ID do consumidor).

Veja na imagem abaixo que o cliente “morreu”

E o servidor continua “no ar”

Legal né? Não é tão difícil, vai… Na próxima parte vamos usar o Docker Compose e subir as imagens de uma vez só.

Até mais.

Programador do CAC/COE da Riachuelo