Déploiement de MySQL à l'aide de Docker-Compose

Déploiement de MySQL à l'aide de Docker-Compose
MySQL est l'un des systèmes de gestion de base de données les plus populaires. De nombreuses applications l'utilisent pour leurs besoins backend. MySQL a essentiellement deux composants, l'une est le serveur de base de données MySQL qui gère les données et interagit avec le monde extérieur, fournissant aux applications les données qu'ils désirent, ainsi que la mise à jour des enregistrements à mesure que les nouvelles informations arrivent. Le client MySQL peut être n'importe quelle application distante comme PhpMyAdmin ou votre application Web personnalisée ou le propre client de la ligne de commande de MySQL qui est également nommé uniquement MySQL.

La configuration du serveur MySQL est souvent fastidieuse, vous devez configurer le compte d'utilisateur, ouvrir les ports, définir des mots de passe, créer des bases de données et des tables, etc. Dans cet article, je vais essayer de minimiser certaines de vos misères en effectuant un simple déploiement MySQL à l'aide de Docker-Compose.

Clause de non-responsabilité: En aucun cas, ce fichier de composition n'est «PRÊT DE PRODUCTION». Si vous souhaitez exécuter une base de données MySQL en production, vous devrez resserrer un peu plus la sécurité. Cela comprendra le verrouillage du compte racine, la configuration de TLS et la définition des autorisations plus strictes sur diverses bases de données pour divers utilisateurs de bases de données, etc.

Un exemple simple

Assurez-vous d'abord que Docker est installé sur votre poste de travail ou votre serveur. Pour exécuter un service MySQL simple, créez d'abord un nouveau dossier sur votre hôte Docker. Nommez-le mysqlcompose:

$ mkdir mysqlcompose

Créer un fichier docker-compose.yml en utilisant votre éditeur de texte préféré et écrivez ce qui suit:

Version: '3.1'
prestations de service:
DB:
Image: mysql
Commande: - Default-Authentication-Plugin = mysql_native_password
redémarrer: toujours
environnement:
Mysql_root_password: usadifferentpassword
Administrateur:
image: administrateur
redémarrer: toujours
PORTS:
- 8080: 8080

Ensuite, exécutez la commande suivante à l'intérieur du même répertoire:

$ docker-compose up -d

Ceci avec le fichier composé ci-dessus, deux nouveaux conteneurs seront créés, il sera d'abord le service de base de données, et le second sera un conteneur d'administrateur qui agira comme un frontage pour la gestion de la base de données.

Bien que la communication entre le conteneur de l'administrateur et le service MySQL soit supérieure à TCP à l'aide du port 3306, nous n'avons pas à ouvrir de ports dans notre base de données. En effet. Vous pouvez répertorier le réseau Docker en utilisant le réseau Docker Network LS et il vous montrera qu'un nouveau réseau a en effet été créé.

Visitez http: // localhost: 8080 et connectez-vous en tant que racine à l'aide du mot de passe usadifferentpassword et vous obtiendrez une interface utilisateur très simple pour interagir avec votre mysql. MySQL peut être configuré pour être authentifié de diverses manières, cependant, nous avons choisi d'utiliser unique. Vous pouvez passer le mot de passe racine MySQL à l'aide d'une variable d'environnement, comme indiqué dans le fichier yml lui-même.

Remarque: Par souci de clarté, j'ai mentionné des informations d'identification importantes comme le mot de passe racine MySQL et d'autres mots de passe utilisateur en texte brut, ici. C'est évidemment un risque de sécurité. La bonne façon de le faire serait d'utiliser les secrets Docker, mais c'est un sujet pour un autre jour.

Déploiement de WordPress

WordPress est peut-être l'exemple classique pour mettre en évidence les forces et les nuances de Docker-Compose. Comme la plupart des installations régulières de WordPress, la variante Docker utilise également MySQL pour sa base de données backend. Cependant, la base de données est exécutée comme un conteneur différent où le serveur Web (avec l'application WordPress) s'exécute sur un autre conteneur.

Voici un extrait de la documentation officielle de Docker-Compose concernant sa configuration.

Version: '3'
prestations de service:
DB:
Image: Mysql: 5.7
Volumes:
- db_data: / var / lib / mysql
redémarrer: toujours
environnement:
Mysql_root_password: SomewordPress
Mysql_database: wordpress
Mysql_user: wordpress
Mysql_password: CreateNewPasswordPelentaTCopyThis
WordPress:
dépend de:
- db
Image: WordPress: Dernière
PORTS:
- "8000: 80"
redémarrer: toujours
environnement:
Wordpress_db_host: db: 3306
Wordpress_db_user: wordpress
Wordpress_db_password: CreateNewPasswordPelentEdontCopyThis
Wordpress_db_name: wordpress
Volumes:
db_data:

Cela créera un site Web WordPress ouvert au port 8000 de votre hôte Docker. Vous pouvez voir que la section Services définit deux services en vertu de l'informatique:

Tout d'abord, la base de données MySQL avec un volume nommé pour stocker des données persistantes et certaines variables d'environnement pour configurer l'utilisateur, la base de données et le mot de passe de MySQL.

Deuxièmement, le conteneur WordPress qui a un serveur Web, PHP et WordPress tous installés avec. Il doit parler à la base de données (disponible en DB: 3306 en interne), il expose le port 80 en interne au reste du monde via le port 8000 de l'hôte Docker 8000. Il a également quelques variables d'environnement définissant où trouver la base de données (DB: 3306), ainsi que le nom de la base de données, le nom d'utilisateur et le mot de passe que nous avons définis sur le service MySQL.

Conclusion

Espérons que les quelques exemples ci-dessus illustrent comment configurer un conteneur MySQL. L'idée sous-jacente est que vous passez le nom de votre base de données et d'autres détails de configuration en tant que variables d'environnement. Vous pouvez toujours vous référer à la description fournie à Docker Hub, puis vous pouvez configurer MySQL pour votre propre application.