Desenvolvendo uma Imagem Docker Personalizada com Dockerfile
- #Docker
- #Microsserviços
O Docker se tornou uma ferramenta essencial no desenvolvimento e implantação de aplicativos modernos. Uma das principais vantagens do Docker é a capacidade de criar imagens personalizadas para encapsular nossas aplicações e todas as suas dependências. Neste artigo, vamos explorar o Dockerfile, um arquivo de configuração usado para definir e criar imagens Docker personalizadas.
O que é um Dockerfile?
Um Dockerfile é um arquivo de texto que contém uma série de instruções que o Docker usa para criar uma imagem Docker. Ele permite automatizar o processo de construção de uma imagem, definindo o ambiente, as dependências e as configurações necessárias para executar uma aplicação.
Estrutura básica de um Dockerfile:
Um Dockerfile consiste em uma série de instruções em formato de texto, onde cada instrução representa uma etapa na criação da imagem. Vamos explorar algumas instruções comuns:
Instrução FROM: Especifica a imagem base a partir da qual a imagem personalizada será construída. Por exemplo, FROM ubuntu:latest utiliza a imagem base mais recente do Ubuntu.
Instrução RUN: Executa comandos durante o processo de construção da imagem. Por exemplo, RUN apt-get update && apt-get install -y python3 atualiza os pacotes do sistema e instala o Python 3.
Instrução COPY ou ADD: Copia arquivos e diretórios do host para dentro da imagem. Por exemplo, COPY . /app copia todos os arquivos do diretório atual para o diretório /app dentro da imagem.
Instrução WORKDIR: Define o diretório de trabalho para as instruções subsequentes. Por exemplo, WORKDIR /app define o diretório de trabalho como /app.
Instrução EXPOSE: Especifica as portas em que o contêiner estará ouvindo em tempo de execução. Por exemplo, EXPOSE 8000 expõe a porta 8000 no contêiner.
Instrução CMD ou ENTRYPOINT: Define o comando padrão a ser executado quando o contêiner for iniciado. Por exemplo, CMD ["python3", "app.py"] executa o arquivo app.py usando o interpretador Python 3.
Exemplo prático:
Vamos criar um Dockerfile para uma aplicação Flask simples que responde a uma requisição HTTP com uma mensagem "Olá, Docker!".
# Escolhendo uma imagem base
FROM python:3.9-slim
# Definindo o diretório de trabalho
WORKDIR /app
# Copiando arquivos para o contêiner
COPY requirements.txt .
COPY app.py .
# Instalando as dependências
RUN pip install --no-cache-dir -r requirements.txt
# Expondo a porta da aplicação
EXPOSE 8000
# Definindo o comando padrão
CMD ["python", "app.py"]
Neste exemplo, usamos a imagem base oficial do Python 3.9. Definimos o diretório de trabalho como /app, copiamos o arquivo requirements.txt e app.py para dentro da imagem, instalamos as dependências e expomos a porta 8000. Por fim, definimos o comando padrão