O autor do artigo, cuja tradução estamos publicando hoje, diz que ele é destinado aos desenvolvedores que desejam aprender o Docker Compose e criarão seu primeiro aplicativo cliente-servidor usando o Docker. O leitor deve estar familiarizado com o básico do Docker. Se não for esse o caso, você pode dar uma olhada
nesta série de materiais,
nesta publicação, onde os conceitos básicos do Docker são discutidos juntamente com os conceitos básicos do Kubernetes e
este artigo para iniciantes.

O que é o Docker Compose?
O Docker Compose é uma ferramenta incluída no Docker. Ele foi projetado para resolver os problemas associados à implantação de projetos.
Estudando o básico do Docker, você pode ter encontrado a criação de aplicativos simples que funcionam de forma autônoma, independentemente de, por exemplo, fontes de dados externas ou determinados serviços. Na prática, essas aplicações são raras. Projetos reais geralmente incluem todo um conjunto de aplicativos colaborativos.
Como você sabe se precisa usar o Docker Compose ao implantar um projeto? De fato - muito simples. Se vários serviços forem usados para garantir o funcionamento deste projeto, o Docker Compose poderá ser útil. Por exemplo, em uma situação em que eles criam um site que, para autenticar usuários, precisa se conectar ao banco de dados. Um projeto semelhante pode consistir em dois serviços - um que fornece o site e outro responsável pela manutenção do banco de dados.
A tecnologia Docker Compose, se descrita de forma simplista, permite, com um único comando, iniciar muitos serviços.
Diferença entre o Docker e o Docker Compose
O Docker é usado para gerenciar os contêineres (serviços) individuais que compõem o aplicativo.
O Docker Compose é usado para gerenciar simultaneamente vários contêineres que compõem o aplicativo. Essa ferramenta oferece os mesmos recursos do Docker, mas permite trabalhar com aplicativos mais complexos.
Docker (contêiner único) e Docker Compose (vários contêineres)Caso de uso típico do Docker Compose
O Docker Compose é, na mão direita, uma ferramenta muito poderosa que permite implantar rapidamente aplicativos com uma arquitetura complexa. Agora, veremos um exemplo do uso prático do Docker Compose, cuja análise permitirá avaliar as vantagens que você terá ao usar o Docker Compose.
Imagine que você é um desenvolvedor de um projeto da web. Este projeto inclui dois sites. O primeiro permite que as pessoas nos negócios criem, com apenas alguns cliques, lojas online. O segundo é voltado para o suporte ao cliente. Esses dois sites interagem com o mesmo banco de dados.
Seu projeto está se tornando mais popular e acontece que o poder do servidor no qual ele trabalha não é mais suficiente. Como resultado, você decide transferir o projeto inteiro para outra máquina.
Infelizmente, você não usou algo como o Docker Compose. Portanto, você terá que transferir e reconfigurar os serviços, um de cada vez, esperando que, no processo deste trabalho, não esqueça nada.
Se você usa o Docker Compose, a transferência do seu projeto para um novo servidor é uma questão que pode ser resolvida executando vários comandos. Para concluir a transferência do projeto para um novo local, você só precisa executar algumas configurações e fazer upload de uma cópia de backup do banco de dados no novo servidor.
Desenvolvendo um aplicativo cliente-servidor usando o Docker Compose
Agora que você sabe para o que usaremos o Docker Compose, é hora de criar seu primeiro aplicativo cliente-servidor usando essa ferramenta. Ou seja, estamos falando sobre o desenvolvimento de um pequeno site (servidor) em Python, que pode produzir um arquivo com um fragmento de texto. Este arquivo é solicitado ao servidor por um programa (cliente), também escrito em Python. Após receber o arquivo do servidor, o programa exibe o texto armazenado na tela.
Observe que esperamos que você seja o proprietário do básico do Docker e que você já tenha a plataforma Docker instalada.
Vamos trabalhar no projeto.
▍1 Criação de projeto
Para criar seu primeiro aplicativo cliente-servidor, sugiro começar com a criação de uma pasta do projeto. Ele deve conter os seguintes arquivos e pastas:
docker-compose.yml
. Este é um arquivo do Docker Compose que conterá as instruções necessárias para iniciar e configurar serviços.- Pasta do
server
. Ele conterá os arquivos necessários para garantir a operação do servidor. client
pasta. Aqui estão os arquivos do aplicativo cliente.
Como resultado, o conteúdo da pasta principal do seu projeto deve ficar assim:
. ├── client/ ├── docker-compose.yml └── server/ 2 directories, 1 file
§ 2 Criação de servidor
Aqui, no processo de criação do servidor, abordaremos algumas coisas básicas sobre o Docker.
2a Criação de arquivo
Vá para a pasta do
server
e crie os seguintes arquivos nela:
- Arquivo
server.py
. Ele conterá o código do servidor. - Arquivo
index.html
. Este arquivo conterá um pedaço de texto que o aplicativo cliente deve exibir. - Arquivo
Dockerfile
. Este é um arquivo do Docker que conterá as instruções necessárias para criar um ambiente de servidor.
É assim que deve ser o conteúdo do seu
server/
pasta:
. ├── Dockerfile ├── index.html └── server.py 0 directories, 3 files
2b. Editando um arquivo Python.
Adicione o seguinte código ao arquivo
server.py
:
Este código permite criar um servidor web simples. Ele fornecerá aos clientes o arquivo
index.html
, cujo conteúdo será exibido posteriormente na página da web.
2c. Edição de arquivo HTML
Adicione o seguinte texto ao arquivo
index.html
:
Docker-Compose is magic!
Este texto será transmitido ao cliente.
2d. Editando o Dockerfile
Agora, criaremos um
Dockerfile
simples, que será responsável por organizar o tempo de execução do servidor Python. Usaremos a
imagem oficial destinada à execução de programas escritos em Python como base da imagem criada. Aqui está o conteúdo do Dockerfile:
Agora vamos trabalhar no cliente.
▍3 Criação de Clientes
Criando a parte do cliente do nosso projeto, recordaremos simultaneamente alguns dos conceitos básicos do Docker.
3a. Criação de arquivo
Vá para a pasta do seu projeto do
client
e crie os seguintes arquivos nela:
- O arquivo
client.py
. Este será o código do cliente. - Arquivo
Dockerfile
. Este arquivo desempenha a mesma função que um arquivo semelhante na pasta do servidor. Nomeadamente, contém instruções que descrevem a criação de um ambiente para executar o código do cliente.
Como resultado, seu
client/
pasta nesta fase do trabalho deve ficar assim:
. ├── client.py └── Dockerfile 0 directories, 2 files
3b Edição de arquivos Python
Adicione o seguinte código ao arquivo
client.py
:
Graças a esse código, o aplicativo cliente pode baixar dados do servidor e exibi-los na tela.
3c. Editando o Dockerfile
Como no caso do servidor, criamos um
Dockerfile
simples para o cliente, responsável por criar o ambiente em que o aplicativo Python do cliente funcionará. Aqui está o código do
Dockerfile
do cliente:
▍4 Docker compor
Como você deve ter notado, criamos dois projetos diferentes: o servidor e o cliente. Cada um deles tem seu próprio
Dockerfile
. Até agora, tudo o que acontece não vai além do básico de trabalhar com o Docker. Agora estamos começando com o Docker Compose. Para fazer isso, recorremos ao arquivo
docker-compose.yml
localizado na pasta raiz do projeto.
Observe que aqui não estamos tentando considerar absolutamente todos os comandos que podem ser usados no
docker-compose.yml
. Nosso principal objetivo é fornecer um exemplo prático que fornece conhecimentos básicos sobre o Docker Compose.
Aqui está o código para colocar no
docker-compose.yml
:
▍5. Montagem do projeto
Depois que todas as instruções necessárias estiverem incluídas no
docker-compose.yml
, o projeto precisará ser montado. Esta etapa do nosso trabalho se assemelha ao uso do
docker build
, mas o comando correspondente está relacionado a vários serviços:
$ docker-compose build
§ 6 Lançamento do projeto
Agora que o projeto está concluído, é hora de iniciá-lo. Esta etapa do nosso trabalho corresponde à etapa na qual, ao trabalhar com contêineres individuais, o comando
docker run
é executado:
$ docker-compose up
Após executar este comando, o terminal deve exibir o texto baixado pelo cliente no servidor:
Docker-Compose is magic!
.
Como já mencionado, o servidor usa a porta
1234
do computador para atender às solicitações do cliente. Portanto, se você acessar o navegador em
http: // localhost: 1234 / , uma página com o texto
Docker-Compose is magic!
será exibida nela
Docker-Compose is magic!
.
Comandos úteis
Vejamos alguns dos comandos que você pode achar úteis ao trabalhar com o Docker Compose.
Este comando permite parar e excluir contêineres e outros recursos criados pelo
docker-compose up
:
$ docker-compose down
Este comando exibe os logs de serviço:
$ docker-compose logs -f [service name]
Por exemplo, em nosso projeto, ele pode ser usado da seguinte forma:
$ docker-compose logs -f [service name]
.
Usando este comando, você pode listar os contêineres:
$ docker-compose ps
Este comando permite executar um comando em um contêiner em execução:
$ docker-compose exec [service name] [command]
Por exemplo, pode ficar assim:
docker-compose exec server ls
.
Este comando permite exibir uma lista de imagens:
$ docker-compose images
Sumário
Examinamos os conceitos básicos do trabalho com a tecnologia Docker Compose, cujo conhecimento permitirá que você use essa tecnologia e, se desejar, inicie um estudo mais aprofundado.
Aqui está o repositório com o código do projeto que analisamos aqui.
Caros leitores! Você usa o Docker Compose em seus projetos?
