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.
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 mysqlcomposeCréer un fichier docker-compose.yml en utilisant votre éditeur de texte préféré et écrivez ce qui suit:
Version: '3.1'Ensuite, exécutez la commande suivante à l'intérieur du même répertoire:
$ docker-compose up -dCeci 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'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.