Docker & Servidores: Scripts Práticos para Limpeza, Dump e Restauração de Banco


Scripts prontos em Bash para gerenciamento do Docker e automação de rotinas de banco de dados em servidores Linux.


1. Subida e Limpeza Rápida de Contêineres Docker

Script para subir uma aplicação via Docker Compose e realizar a limpeza de contêineres parados, imagens órfãs e volumes não utilizados para economizar espaço em disco.

Bash
#!/bin/bash

# Subir/Atualizar a aplicação via Compose em segundo plano
echo "🚀 Subindo serviços com Docker Compose..."
docker compose up -d --build

# Aguarda 5 segundos para estabilização dos contêineres
sleep 5

# Executa a limpeza do ecossistema Docker
echo "🧹 Executando limpeza de itens inutilizados..."
docker system prune -f

# Limpa volumes não associados a nenhum contêiner rodando
docker volume prune -f

echo "✅ Ambiente Docker atualizado e limpo com sucesso!"
Pontos-chave:

  • docker compose up -d --build: Reconstrói imagens modificadas e sobe os contêineres no modo desanexado (detached).

  • docker system prune -f: Remove contêineres parados, redes não utilizadas e imagens sem tag (dangling).

  • docker volume prune -f: Apaga volumes orfãos que não estão em uso por nenhum contêiner ativo.

2. Dump (Backup) Automático de Banco de Dados MySQL/MariaDB

Gera um arquivo de backup .sql.gz extraindo os dados diretamente de dentro de um contêiner em execução, adicionando o carimbo de data/hora.

Bash
#!/bin/bash

CONTAINER_NOME="meu_mysql"
DB_USER="root"
DB_PASS="sua_senha_segura"
DB_NAME="minha_base"
PASTA_DESTINO="/backups/db"
DATA=$(date +%Y-%m-%d_%H-%M)

mkdir -p "$PASTA_DESTINO"

# Executa o mysqldump dentro do contêiner e compacta diretamente
docker exec -i "$CONTAINER_NOME" mysqldump -u"$DB_USER" -p"$DB_PASS" "$DB_NAME" | gzip > "${PASTA_DESTINO}/${DB_NAME}_${DATA}.sql.gz"

if [ $? -eq 0 ]; then
  echo "✅ Dump da base '$DB_NAME' criado: ${DB_NAME}_${DATA}.sql.gz"
else
  echo "❌ Falha ao gerar o dump do banco de dados."
fi
Pontos-chave:

  • docker exec -i: Executa o utilitário mysqldump interativamente dentro do contêiner sem precisar instalar o cliente MySQL no host.

  • gzip >: Reduz drasticamente o tamanho do arquivo final canalizando a saída diretamente para a compressão.

3. Restauração de Banco de Dados PostgreSQL via Docker

Lê um arquivo .sql de backup localizado no servidor e restaura os dados para dentro de um contêiner de banco PostgreSQL.

Bash
#!/bin/bash

CONTAINER_NOME="meu_postgres"
POSTGRES_USER="postgres"
DB_NAME="minha_base"
ARQUIVO_DUMP="/backups/db/restaurar.sql"

if [ ! -f "$ARQUIVO_DUMP" ]; then
  echo "❌ Erro: O arquivo '$ARQUIVO_DUMP' nao foi encontrado!"
  exit 1
fi

echo "🔄 Restaurando dados no PostgreSQL..."
cat "$ARQUIVO_DUMP" | docker exec -i "$CONTAINER_NOME" psql -U "$POSTGRES_USER" -d "$DB_NAME"

if [ $? -eq 0 ]; then
  echo "✅ Restauração concluída com sucesso na base '$DB_NAME'."
else
  echo "❌ Falha durante o processo de restauração."
fi
Pontos-chave:

  • cat ... | docker exec -i ... psql: Envia o fluxo do arquivo SQL local diretamente para o interpretador de comandos psql dentro do contêiner ativo.

  • [ ! -f ... ]: Trava a execução e evita falhas no banco caso o caminho do arquivo de backup esteja incorreto.


Comentários

Postagens mais visitadas deste blog

Gerando Relatórios em PDF com Python (ReportLab e FPDF)

Python para Computação Quântica: Introdução com Qiskit

C# e Banco de Dados: Como Conectar e Realizar Operações com SQL Server