Um guia para iniciantes do Docker - como criar um lado cliente / servidor com o Docker-Compose

Você é um desenvolvedor e deseja descobrir o docker-compose? Este artigo foi feito para você.

Direitos autorais de dev.to post

Após uma breve introdução ao Docker-Compose, você poderá criar seu primeiro aplicativo do lado do cliente / servidor com o Docker.

Este artigo leva em consideração que você conhece o básico do Docker. Caso contrário, não entre em pânico! Sugiro que você leia meu primeiro artigo para descobrir o Docker e aprenda como criar seu primeiro aplicativo.

O que é o Docker-Compose?

O Docker-Compose é uma ferramenta fornecida pelo Docker. Para simplificar, essa ferramenta é implementada para resolver problemas de arquitetura em seus projetos.

Como você deve ter notado no meu artigo anterior, criamos um programa simples que exibia "O Docker é mágico!" Quando foi lançado.

Infelizmente, quando você é desenvolvedor, raramente cria um programa independente (um programa que não requer a execução de nenhum outro serviço, como um banco de dados).

No entanto, como você sabe se precisa do Docker-Compose? É fácil se seu aplicativo precisar de vários serviços para executar, você precisa desta ferramenta. Por exemplo, se você criar um site que precise se conectar ao seu banco de dados para autenticar usuários (aqui 2 serviços, site e banco de dados).

O Docker-compose oferece a possibilidade de iniciar todos esses serviços em um único comando.

Diferença entre Docker e Docker-Compose

O Docker é usado para gerenciar um contêiner (serviço) individual para seu aplicativo.

O Docker-Compose é usado para gerenciar vários contêineres ao mesmo tempo para o mesmo aplicativo. Essa ferramenta oferece os mesmos recursos do Docker, mas permite que você tenha aplicativos mais complexos.

Docker (contêiner individual) VS Docker-Compose (vários contêineres)

Um caso de uso típico

Essa ferramenta pode se tornar muito poderosa e permitir implantar aplicativos com arquiteturas complexas muito rapidamente. Darei a você um estudo de caso concreto que comprove que você precisa.

Imagine, você é o criador orgulhoso do seu software da web.

Sua solução oferece dois sites. O primeiro permite que as lojas criem sua loja on-line em apenas alguns cliques. O segundo é dedicado ao suporte ao cliente. Esses dois sites interagem com o mesmo banco de dados.

Você está começando a ter sucesso e seu servidor não é mais suficiente. Então, você decide migrar todo o software para outra máquina.

Infelizmente, você não usou o docker-composite. Portanto, você terá que migrar e reconfigurar seus serviços um após o outro, esperando que nada tenha sido esquecido.

Se você tivesse usado uma janela de encaixe, em apenas alguns comandos, teria implantado toda a arquitetura em seu novo servidor. Tudo o que você precisa fazer agora é fazer algumas configurações e carregar o backup do seu banco de dados para finalizar a migração.

Agora vamos criar seu primeiro aplicativo cliente / servidor com o Docker-Compose

Agora que você sabe para que composição do docker será usada, é hora de criar seu primeiro aplicativo cliente / servidor!

O objetivo deste tutorial é criar um pequeno site (servidor) em Python que contenha uma frase. Esta frase deve ser recuperada por um programa (cliente) em Python que exibirá a frase.

Nota: Este tutorial leva em consideração que você já instalou o Docker no seu computador e que possui o básico. Se não for esse o caso, convido você a consultar meu artigo anterior.

1. Crie seu projeto

Para criar seu primeiro aplicativo cliente / servidor, convido você a criar uma pasta no seu computador. Ele deve conter na raiz o seguinte arquivo e pastas:

  • Um arquivo 'docker-compose.yml' (arquivo docker-compose que conterá as instruções necessárias para criar os diferentes serviços).
  • Uma pasta 'servidor' (essa pasta conterá os arquivos necessários para configurar o servidor).
  • Uma pasta "cliente" (essa pasta conterá os arquivos necessários para configurar o cliente).

Você deve ter esta arquitetura de pastas:

.
├── cliente /
Dock── docker-compose.yml
Server── servidor /
2 diretórios, 1 arquivo

2. Crie seu servidor

Para começar com lembretes dos conceitos básicos do Docker, começaremos criando o servidor.

2a Crie arquivos

Vá para a pasta "servidor" e crie os seguintes arquivos:

  • Um arquivo 'server.py' (arquivo python que conterá o código do servidor).
  • Um arquivo "index.html" (arquivo HTML que conterá a frase a ser exibida).
  • Um arquivo 'Dockerfile' (arquivo de docker que conterá as instruções necessárias para criar o ambiente do servidor).

Você deve ter essa arquitetura de pasta no seguinte caminho 'servidor /':

.
D── Dockerfile
├── index.html
└── server.py
0 diretórios, 3 arquivos

2b. Edite o arquivo Python

Você pode adicionar o seguinte código ao arquivo 'server.py':

Este código permitirá que você crie um servidor web simples dentro desta pasta. Ele recuperará o conteúdo do arquivo index.html para compartilhá-lo em uma página da web.

2c. Edite o arquivo Html

Você pode adicionar a seguinte frase ao arquivo "index.html":

O servidor compartilhará esse arquivo no início e essa frase será exibida.

2d. Edite o arquivo do Docker

Aqui, criaremos um Dockerfile básico que será responsável pela execução do nosso arquivo Python. Para fazer isso, vamos usar a imagem oficial criada para executar o Python.

3. Crie seu cliente

Para continuar com os lembretes dos conceitos básicos do Docker, criaremos o cliente.

3a. Crie arquivos

Vá para a pasta "cliente" e crie os seguintes arquivos:

  • Um arquivo 'client.py' (arquivo python que conterá o código do cliente).
  • Um arquivo 'Dockerfile' (arquivo de docker que conterá as instruções necessárias para criar o ambiente do cliente).

Normalmente, você deve ter essa arquitetura de pasta no seguinte caminho 'cliente /':

.
Client── client.py
D── Dockerfile
0 diretórios, 2 arquivos

3b Edite o arquivo Python

Você pode adicionar o seguinte código ao arquivo 'client.py':

Este código permitirá obter o conteúdo da página da web do servidor e exibi-lo.

3c. Edite o arquivo do Docker

Quanto ao servidor, criaremos um Dockerfile básico que será responsável pela execução do nosso arquivo Python.

4. Voltar para Docker-Compose

Como você deve ter notado, criamos dois projetos diferentes, o servidor e o cliente, ambos com um Dockerfile.

Até agora, nada mudou desde o básico que você já conhece.

Agora vamos editar o 'docker-compose.yml' na raiz do repositório.

Nota: Concluído o Docker-Compose, este artigo tem como objetivo dar um exemplo concreto e típico. É por isso que você não vê todas as palavras-chave.

5. Crie o Docker-Compose

Depois que a janela de encaixe-composição estiver configurada, seu aplicativo cliente / servidor precisará ser criado. Esta etapa corresponde ao comando 'docker build', mas aplicado aos diferentes serviços.

Construção $ docker-compose

6. Execute o Docker-Compose

Seu docker-compor foi construído! Agora é hora de começar! Esta etapa corresponde ao comando 'docker run', mas aplicado aos diferentes serviços.

$ docker-compor

Lá vai você, é isso. Você deve ver “Docker-Compose is magic!” Exibido no seu terminal.

Nota: Conforme indicado no tutorial, o serviço "servidor" usa a porta 1234 do seu computador para distribuir seu conteúdo. Se você abrir a página 'http: // localhost: 1234 /' no seu computador, verá 'Docker-Compose is magic!'.

Código está disponível

Se você deseja recuperar o código completo para descobri-lo facilmente ou executá-lo, coloquei-o à sua disposição no meu Github.

Comandos úteis para o Docker

Como de costume, preparei uma lista de pedidos que podem ser úteis para você com o docker-compose.

  • Interrompe contêineres e remove contêineres, imagens ... criadas por 'docker-compose up'.
$ docker-compor para baixo
  • Exibe a saída de log de serviços (exemplo: 'docker-compose logs -f client').
$ docker-compose logs -f [nome do serviço]
  • Lista recipientes.
$ docker-compose ps
  • Executa o comando em um contêiner em execução (exemplo: 'docker-compose exec server ls').
$ docker-compose exec [nome do serviço] [comando]
  • Lista imagens.
$ docker-compor imagens

Já terminou…

Obrigado pela leitura! Compartilho regularmente artigos no FreeCodeCamp; você pode conferir meu perfil no Twitter para acompanhar minhas atividades e obter dicas e notícias úteis sobre desenvolvimento.

Se você deseja aprender a codificar, receba recursos enviados diretamente para sua caixa de correio, que permitem melhorar suas habilidades de programação. Receba os artigos, cursos, tutoriais, dicas, livros, motivação e outros conteúdos exclusivos mais recentes.
Então, junte-se à nova comunidade dedicada ao código sem mais demora (garantia sem spam)!

-> Assine a newsletter [Here We Code]

Não hesite em me dar um feedback para melhorar meus futuros artigos nos comentários abaixo.