Executando scripts Python com Docker: um guia passo a passo

Executando scripts Python com Docker: um guia passo a passo

Automatizar tarefas usando scripts Python é uma prática comum entre desenvolvedores. No entanto, garantir que esses scripts sejam executados perfeitamente em vários sistemas pode apresentar desafios significativos, principalmente devido ao gerenciamento de dependências.É aqui que o Docker se mostra inestimável, permitindo encapsular seu script Python e suas dependências associadas em um contêiner portátil. Isso garante que o script tenha um desempenho uniforme em diferentes ambientes. Neste guia abrangente, descreveremos o processo de criação de um script Python prático e sua execução em um contêiner Docker.

As vantagens de usar o Docker para Python

Gerenciar dependências do Python pode se tornar rapidamente trabalhoso, especialmente quando diferentes projetos exigem pacotes conflitantes. O Docker resolve esses problemas integrando seu script ao ambiente dele. Isso elimina a desculpa comum de “funciona na minha máquina”, garantindo um desempenho consistente em todas as plataformas.

Além disso, o Docker ajuda a manter um ambiente de desenvolvimento limpo, impedindo a instalação de diversos pacotes Python globalmente. Todas as dependências estão contidas no ambiente Docker, agilizando o gerenciamento de projetos.

Ao passar seu script para outros usuários ou implantá-lo, o Docker simplifica o processo. Não há necessidade de instruções de instalação extensas — apenas um único comando é suficiente para executar seu script.

Criando o script Python

Primeiro, crie um diretório de projeto para armazenar seu script Python e o Dockerfile. Use os seguintes comandos para configurar o diretório:

mkdir docker_file_organizercd docker_file_organizer

Em seguida, crie um script chamado organize_files.py que verificará um diretório especificado e categorizará os arquivos com base em suas extensões:

nano organize_files.py

Insira o seguinte código no arquivo organize_files.py. Este script utiliza os módulos ose integrados shutilpara manipular arquivos dinamicamente e gerar diretórios:

import osimport shutilSOURCE_DIR = "/files"def organize_by_extension(directory): try: for fname in os.listdir(directory): path = os.path.join(directory, fname) if os.path.isfile(path): ext = fname.split('.')[-1].lower() if '.' in fname else 'no_extension' dest_dir = os.path.join(directory, ext) os.makedirs(dest_dir, exist_ok=True) shutil.move(path, os.path.join(dest_dir, fname)) print(f"Moved: {fname} → {ext}/") except Exception as e: print(f"Error organizing files: {e}")if __name__ == "__main__": organize_by_extension(SOURCE_DIR)

Este script organiza arquivos em um diretório especificado por suas extensões. Ele utiliza o osmódulo para listar arquivos, verificar se cada item é um arquivo, extrair sua extensão e criar pastas com seus nomes. Por fim, o shutilmódulo facilita a movimentação de cada arquivo para sua respectiva pasta, acompanhada de uma mensagem indicando o novo local.

Definindo o Dockerfile

Agora, vamos criar um Dockerfile que descreve o ambiente para seu script:

FROM python:latestLABEL maintainer="[email protected]"WORKDIR /usr/src/appCOPY organize_files.py. CMD ["python", "./organize_files.py"]

Este Dockerfile configura um contêiner com Python, copia seu script nele e garante que o script seja executado automaticamente na inicialização do contêiner:

Criar arquivo Docker

Construindo a imagem do Docker

Antes de compilar a imagem do Docker, certifique-se de que o Docker esteja instalado no seu sistema. Você pode então empacotar tudo em uma imagem com o seguinte comando:

sudo docker build -t file-organizer.

Este comando lê o Dockerfile e reúne a configuração necessária do Python junto com seu script em uma única imagem de contêiner:

Construir imagem do Docker

Criando um diretório de amostra

Para observar nosso script em ação, crie uma pasta de teste chamada sample_files e preencha-a com vários tipos de arquivo para simular um ambiente desorganizado:

mkdir ~/sample_filestouch ~/sample_files/test.txttouch ~/sample_files/image.jpgtouch ~/sample_files/data.csv

Executando o script dentro do Docker

Por fim, inicie seu contêiner Docker e monte o diretório sample_files nele. A -vflag conecta seu ~/sample_filesdiretório local ao /filesdiretório do contêiner, permitindo que o script Python acesse e organize os arquivos:

docker run --rm -v ~/sample_files:/files file-organizer

Ao usar o --rmsinalizador, o contêiner será removido automaticamente após a conclusão, reduzindo o consumo de espaço em disco:

Executar script no Docker

Para verificar se os arquivos foram classificados corretamente, utilize o treecomando:

tree sample_files

Verificar resultado com comando de árvore

Conclusão

Com seu script Python sendo executado com sucesso em um contêiner Docker, você pode aproveitar um ambiente de desenvolvimento simplificado, portátil e consistente. Essa abordagem em contêineres não só facilita a reutilização para outras tarefas de automação, como também simplifica o compartilhamento de seus scripts sem preocupações com dependências, mantendo assim seu sistema organizado. Como um projeto futuro, considere explorar como criar imagens Docker com vários scripts, automatizar tarefas com tarefas cron ou integrar seus scripts com ferramentas essenciais como Git, Jenkins ou serviços em nuvem para aprimorar ainda mais seus fluxos de trabalho de automação.

Fonte e Imagens

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *