Este post também está disponível em:
English

Quando trabalhamos com containers, muitas vezes precisamos de um ambiente de desenvolvimento ou testes que reflita a produção. No meu caso, precisei criar uma imagem Docker personalizada contendo bancos de dados e collections de uma instância MongoDB em produção.
Para isso, utilizei um shell script para exportar e importar os dados. Primeiro, apresento o script e, em seguida, explico como incorporá-lo em uma imagem Docker.
Exportação e Importação de Dados do MongoDB com Shell Script
Como a importação ocorre dentro de um container Docker, não foi necessário autenticação (usuário/senha) no processo de import. Além disso, para evitar um volume excessivo de dados no ambiente de testes, limitei a exportação a 100 documentos por collection – esse valor pode ser ajustado conforme a necessidade.
A seguir, o script utilizado para exportar os dados de uma instância MongoDB e posteriormente importá-los em um container Docker:
### MONGOEXPORT
candidates=$(echo "show databases" | mongo -u <usuario> --host <hostname>:27017 --authenticationDatabase admin -p <senha> | grep -Ev "^(MongoDB|connecting|admin|local|test|bye)" | awk '{print $1}')
for candidate in $candidates; do
collections=`echo "show collections" | mongo -u <usuario> --host <hostname>:27017 --authenticationDatabase admin -p <senha> $candidate --quiet`
var=0
for collection in $collections; do
var=$((var + 1))
mongoexport -u <usuario> --host <hostname>:27017 --authenticationDatabase admin -p <senha> --db $candidate -c $collection --limit=100 --out json/$var"_"$candidate"_"$collection"_export.json"
done
done
ShellScript### MONGOIMPORT
for i in `ls json`;
do
database=`echo $i | awk -F "__" '{print $2}'`
collection=`echo $i | awk -F "__" '{print $3}'`
mongoimport -d $database -c $collection --file json/$i
done
ShellScript