Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Semeando um banco de dados MySQL para um aplicativo Django dockerizado


O MySQL (e variantes como o Percona Server) fornecem um recurso para propagar um banco de dados na primeira inicialização do contêiner descrito na seção "Inicializando uma nova instância" no página do hub docker .

Um Dockerfile usando esta técnica será parecido com
FROM mysql:8
COPY seed-data.sql /docker-entrypoint-initdb.d/

Nota:a barra final do diretório é importante.

Quando você docker run esta imagem, a janela de encaixe criará o contêiner, a janela de encaixe -entrypoint.sh executará o script sql e, em seguida, o contêiner estará pronto para servir os dados.

Os dados persistirão por meio de reinicializações do contêiner - os dados de semente e as modificações subsequentes.

Você pode reutilizar o contêiner para tempos de inicialização mais rápidos - as partidas subsequentes do contêiner não precisarão inicializar o banco de dados ou propagar os dados. Quando você precisar de dados originais, exclua o contêiner e docker run a imagem novamente.

Ao excluir o contêiner, lembre-se de excluir o volume do docker que contém os dados do banco de dados:docker rm -v $CONTAINER_NAME .

Eu uso esse método para fornecer dados padrão para POCs de linguagem/framework, bem como CI/CD. Inicializar um novo banco de dados e propagar grandes quantidades de dados pode levar alguns minutos, portanto, você desejará alguma lógica para pausar as operações automatizadas até que você possa fazer uma conexão de banco de dados com êxito.

Espero que isso ajude você em seu caminho.