Docker MySQL: Comment creér deux bases de données dans un conteneur

Docker MySQL: Comment creér deux bases de données dans un conteneur

🤔 Pourquoi?

J’en étais fatigué.

Je n’ai pas voulu contaminer ma base de données dans Docker avec plusieurs faux noms ou du contenu de Lorem Ipsum. Parce que lorsque je veux afficher tous les enregistrements ou des photos dans l’application actuelle, je veux les originaux pour la présentation au client.

De plus, j’ai voulu une base de données additionnelle, où si les migrations échouent, je peux retourner à la dernière version facilement, ou la détruire et la recréer sans exécuter les seeders ou utiliser une copie de sauvegarde avec des données presque réelles.

De nombreux frameworks ont une approche différente pour le faire, comme l’exécution des tests dans les transactions, la vidange des données, etc.

Mais je ne veux pas apprendre d’une autre façon pour le faire.

J’ai trouvé une méthode différente.

Qu’arriverait-il si nous ajoutions d’autres bases de données dans le conteneur ? Mieux encore, de manière automatique.

🔨 Comment?

Pour démontrer que je n’utilise pas l’IA pour générer des tutoriels sérieux dans mes posts, je vais utiliser potato (pomme de terre) comme nom de projet dans ce tutoriel.

Tout d’abord, crée un dossier où tu veux sauvegarder les scripts. Pour ce tutoriel, on va l’appeler dockerdb_init. Ensuite, crée un fichier appelé create_test_database.sql avec le contenu suivant :

CREATE DATABASE IF NOT EXISTS `potato_db_test`;
GRANT ALL ON `potato_db_test`.* TO 'potato_db_user'@'%'

Docker crée simplement une base de données en utilisant les variables d’environnement fournies. Puisque le projet utilise une base de données de test, nous allons ajouter le suffixe “test”.

Si tu utilises un fichier docker-compose.yml, c’est la spécification pour le conteneur.

db:
container_name: potato_db
image: "mysql:8.0"
volumes:
- "./dockerdb:/var/lib/mysql"
- "./dockerdb_init:/docker-entrypoint-initdb.d"
env_file:
- .env
ports:
- "3306:3306"

Pour la raison que je veux garder mes variables d’environnement dans un fichier séparé, tu peux les mettre dans ton fichier .env:

Terminal window
MYSQL_ROOT_PASSWORD=rootpassword
MYSQL_DATABASE=potato_db
MYSQL_USER=potato_db_user
MYSQL_PASSWORD=potato_db_pass

La première fois que tu exécutes le conteneur, le script s’exécutera et tu auras désormais deux bases de données : potato_db et potato_db_test.

Mes articles ne sont pas generés par l'IA, cependant ils pourrait y être corrigés. Le premier brouillon est ma création originale

Tags

Auteur

Écrit par Helmer Davila

Dans d'autres langues

I only wanted to not pollute my Docker database with a bunch of fake names or lorem ipsum content

Docker MySQL - How to create two databases within the same container

Solo quería no contaminar mi base de datos dentro de Docker con un montón de nombres falsos o contenido de Lorem Ipsum

Docker MySQL - Cómo crear dos bases de datos dentro del mismo contenedor

Articles connexes

macOS VM et Docker dans Parallels

Comment exécuter un VM macOS et Docker ensembles sur macOS dans Parallels

Rails 6 + MySQL + PHPMyAdmin

Rails 6: Execution de Docker avec PHPMyAdmin