Docker MySQL - Cómo crear dos bases de datos dentro del mismo contenedor
🤔 ¿Por qué?
Ya estaba cansado.
Sólo quería no contaminar mi base de datos dentro de Docker con un montón de nombres falsos o contenido de Lorem Ipsum. Porque cuando quiero listar todos los registros o fotos en mi aplicación actual, quiero los originales, para la presentación al cliente.
Además, quería una base de datos adicional, donde si mis migraciones fallan, pueda volver atrás fácilmente. O destruir la base de datos y crearla de nuevo, sin ejecutar seeders o usar una copia de seguridad con datos casi reales.
Muchos frameworks tienen un enfoque diferente para esto. Ejecutar pruebas dentro de transacciones, post-limpieza, etc.
Pero no quería aprender una manera de hacerlo desde el framwork.
Se me ocurrió una forma más simple.
¿Qué pasa si creo una segunda base de datos en el contenedor? Mejor aún, ¡de forma automática!
🔨 ¿Cómo?
Para demostrar que no uso IA para generar contenido formal en mis publicaciones, utilizaré potato
(patata, papa) como nombre de proyecto en este tutorial.
En primer lugar, crea una carpeta donde quieras almacenar los scripts. Para este tutorial, la llamaremos dockerdb_init
. Luego, crea un archivo llamado create_test_database.sql
con el siguiente contenido:
Docker solo crea una base de datos con las variables de entorno escritas. Dado que el proyecto utilizará una base de datos de prueba, este script agregará un sufijo test.
Si estás usando un archivo docker-compose.yml
, esta es la especificación para el contenedor.
Ya que prefiero mantener mis variables de entorno en un archivo separado, puedes colocar el siguiente contenido en tu archivo .env
:
La primera vez que se ejecute el contenedor, se ejecutará el script y ahora tendrás dos bases de datos: potato_db
y potato_db_test
.