Docker: Ferramenta essencial para desenvolvedores e gestão de aplicativos

Docker: Ferramenta essencial para desenvolvedores e gestão de aplicativos

O que é o Docker

O Docker é uma ferramenta de código aberto para conteinerização que agiliza a criação e a implantação de aplicativos por meio do uso de contêineres. Os contêineres nos permitem agrupar todas as partes de um aplicativo em um único pacote para implantação.

Esta ferramenta facilita para que diferentes desenvolvedores trabalharem no mesmo projeto, no mesmo ambiente, sem quaisquer dependências ou problemas com o sistema operacional. Os containers do Docker funcionam de forma semelhante a uma máquina virtual, no entanto, os aplicativos compartilham o mesmo kernel do Linux.

O Docker é frequentemente utilizado em conjunto com o Kubernetes, uma ferramenta robusta de gerenciamento de contêineres que automatiza a implantação de contêiners. Enquanto o Docker é utilizado para empacotar, isolar e distribuir aplicativos em contêineres, o Kubernetes atua como o agendador de contêineres, responsável por implantar e dimensionar o aplicativo.

 

Dockerfile vs Docker Compose

Dockerfile é um arquivo de texto que contém uma imagem e os comandos que um desenvolvedor pode chamar para montar a imagem. Os comandos geralmente são processos simples, como instalar dependências, copiar arquivos e definir configurações:

FROM python:3.10
WORKDIR /app
COPY . /app

RUN pip install –upgrade pip && pip install flask

EXPOSE 5000

CMD [“flask”, “run”, “–host=0.0.0.0”]

O Docker Compose é uma ferramenta para definir e executar aplicativos Docker de vários contêineres. As informações que descrevem os serviços e as redes de um aplicativo estão contidas em um arquivo YAML, chamado docker-compose.yml:

version: “3”
services:
python:
image: “app-image:1.0”
container_name: “Container-python”
ports:
– “5000:5000”
restart: always
hostname: “app-python”

O Docker Compose é capaz de orquestrar a conteinerização e a implantação de vários pacotes de software. Você pode selecionar quais imagens são usadas para determinados serviços, definir variáveis específicas do ambiente, configurar conexões de rede e muito mais.

Abaixo estão as três etapas necessárias que iniciam a maioria dos fluxos de trabalho do Docker:

  • Construir um Dockerfile para cada imagem que você deseja utilizar;
  • Utilizar os Dockerfiles para criar as imagens a serem utilizadas;
  • Construir um docker-compose para criar o ambiente que executará sua aplicação.

Em resumo, os Dockerfiles definem as instruções para uma única imagem em um aplicativo, mas o Docker Compose é a ferramenta que permite criar e manipular um aplicativo com vários contêineres.

O Docker Compose permite que você use um arquivo YAML para operar aplicativos de vários contêineres de uma só vez. Você pode definir a quantidade desejada de réplicas de contêineres, suas redes e volumes, e com um único comando, você pode criar, executar e configurar todos o ambiente.

O Docker Compose é ótimo para ambientes de desenvolvimento, teste e preparação, bem como fluxos de trabalho de integração contínua.

A grande vantagem de usar o Compose é que você pode definir seu conjunto de aplicativos em um arquivo, mantê-lo na raiz do repositório de seu projeto e permitir facilmente que outra pessoa contribua com seu projeto. Alguém só precisaria clonar seu repositório e iniciar o aplicativo usando o Compose.

Vamos ver como o processo funciona. Primeiramente crie e acesse uma pasta para o projeto.

 

Passo 1: Crie o aplicativo

Crie um arquivo chamado app.py no diretório do seu projeto e cole o seguinte código:

from flask import Flask

app = Flask(__name__)

@app.route(‘/’)
def index():
return ‘Mensagem enviada de dentro de um container!’

 

Esta é uma aplicação simples, que nos retornará uma mensagem quando acessada.

 

Passo 2: Crie um Dockerfile

Crie um arquivo chamado Dockerfile no diretório do seu projeto e cole o seguinte código:

FROM python:3.10
WORKDIR /app
COPY . /app

RUN pip install –upgrade pip && pip install flask

EXPOSE 5000

CMD [“flask”, “run”, “–host=0.0.0.0”]

 

Isso diz ao Docker para:

Crie uma imagem começando com a imagem do Python 3.10.
Defina o diretório de trabalho do container como /app.
Copia o conteúdo da pasta atual para dentro do nosso container na pasta /app.
Instalar o flask, que é uma dependência da nossa aplicação.
Define que o container está escutando na porta 5000.
Define o comando padrão para o contêiner, o flask run.

Execute o seguinte comando para criar uma imagem docker chamada “app-image:1.0” com esse Dockerfile:

docker build -t app-image:1.0 .

 

Passo 3: Crie um arquivo docker-compose

Crie um arquivo chamado compose.yaml no diretório do seu projeto e cole o seguinte:

version: “3”
services:
app:
image: “app-image:1.0”
container_name: “Container-python”
ports:
– “5000:5000”
restart: always
hostname: “app-python”

 

Este arquivo compose define apenas um serviço, o “app”, mas poderíamos definir a criação de outros serviços, além de redes, volumes e outros recursos do Docker.

O serviço “app” usa a imagem criada a partir do Dockerfile. Em seguida, ele vincula o contêiner e a máquina host à porta exposta, 5000.

 

Passo 4: Execute seu aplicativo com o Compose

No diretório do seu projeto, inicie seu aplicativo com o comando:

docker compose up

O Compose inicia os serviços que você definiu, e para testarmos, basta abrir um navegador e acessar o endereço:

http://localhost:5000/

ou

http://127.0.0.1:5000/

Você deverá receber uma resposta da sua aplicação vinda de dentro do seu container, que foi criado com o Docker Compose.

 

 

Líder em Treinamento e serviços de Consultoria, Suporte e Implantação para o mundo open source. Conheça nossas soluções:

CURSOSCONSULTORIA

Anterior Desvendando o Mundo da Computação: Processos, Programas e Comunicação
Próxima Curso 4Linux: Domine a orquestração de microsserviços em nuvem!

About author

Você pode gostar também

Containers

Descubra como o Helm facilita a instalação de aplicações no Kubernetes

O que é? O Helm é um gerenciador de pacotes para o Kubernetes que permite que os desenvolvedores e operadores configurem e implantem mais facilmente aplicativos nos clusters do Kubernetes.

DevOps

Descubra como o Ansible e o IaC podem revolucionar sua infraestrutura de TI

O termo IaC – Infrastructure as Code – dá nome aos processos de provisionamento de infraestrutura tecnológica (principalmente em Cloud Computing) através de códigos, viabilizando o versionamento e a colaboração

Desenvolvimento

Domine o Vim: o editor de texto essencial para Sysadmins Linux

Para um Sysadmin Linux, possuir domínio de editores de texto via linha de comando é imprescindível. Constantemente temos a necessidade de alterar arquivos, visualizar  o contéudo, abrir mais de um