la création d'une base de données par défaut dans mysql à l'aide de dockerfile
Im en utilisant cette tutum-docker-mysql dockerfile, de se lever et courir avec un menu fixe de l'image avec mysql installé,le menu fixe fichier crée un utilisateur avec le nom root et pas de mot de passe, ce dont j'ai besoin est d'ajouter quelque chose comme cela pour le dockerfile:
RUN mysql -uroot -p"" && mysql create database test;
Alors quand j'ai créer une image à partir du menu fixe, le fichier de la base de données doit déjà être là.
- Ce qui se passe quand vous essayez cela?
- j'ai essayé quelques commandes, et a obtenu diff erreurs, j'ai essayé mysql -uroot "créer une base de données de test", et l'erreur est :ERREUR de 2002 (HY000): can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
- Aussi essayé mysqld -uroot -p"" "créer une base de données de test", et l'erreur est :140710 10:12:28 [Avertissement] à l'Aide de l'option unique préfixe key_buffer au lieu de key_buffer_size est obsolète et sera supprimée dans une version future. Veuillez utiliser le nom complet de la place.
- Et ont également essayé d'EXÉCUTER /usr/bin/mysqld_safe sommeil 5 && mysql -uroot -e "créer une base de données de test;" qui est semblable à la requête dans le create_db fichier dans le même référentiel, cette fois l'erreur est :140710 10:15:24 mysqld_safe ne Pouvez pas vous connecter au journal des erreurs et syslog en même temps. Supprimer tous --log-error options de configuration de syslog --pour prendre effet.
- Comment est-ce que votre Dockerfile look?
- C'est exactement le Dockerfile que j'utilise:github.com/tutumcloud/tutum-docker-mysql/blob/master/Dockerfile mais ce ligne :EXÉCUTER /usr/bin/mysqld_safe sommeil 5 && mysql -uroot -e "créer une base de données de test;"
- Si vous avez téléchargé et modifié le Dockerfile ou de ce qu'on vous fait faire? Si vous fournir toutes les informations dans votre question, quelqu'un pourrait être en mesure de vous aider plus rapidement. E. g., montrer votre Dockerfile et la façon dont vous construisez votre image.
- Salut Behe, merci beaucoup pour vos réponses,là est la question exacte,je veux utiliser ce menu fixe de fichier: github.com/tutumcloud/tutum-docker-mysql/blob/master/Dockerfile, pour créer une image avec mysql installé en elle, je crée l'image, il suffit d'écrire sudo docker construire -t="test/test" . et tout est bon, sauf une chose, j'ai besoin d'ajouter quelque chose à ce fichier, afin de créer une base de données appelée test, à l'intérieur de la base de données mysql, donc, quand je lance le une image, pour utiliser le mysql, il dispose d'une base de données appelée test, et je n'ai pas besoin de le créer mannually, c'est tout.
Vous devez vous connecter pour publier un commentaire.
J'ai été en mesure d'accomplir le but de l'ajout d'une base de données pour la tutum-docker-mysql image en procédant comme suit.
À l'intérieur de ça .sh fichier que j'ai ajouté une ligne, juste au-dessous des deux "mysql -uroot" les lignes qui sont déjà là. J'ai simplement ajouté:
Après cette modification .sh fichier, j'ai simplement intégré le support de l'image.
Après le panneau de l'image a été construit, j'ai pu courir avec quelque chose comme:
Une fois que le conteneur est en cours d'exécution, vous devez connaître le mot de passe et l'adresse ip du conteneur. Pour obtenir le mot de passe il vous suffit de faire
Mais, bien sûr, utiliser le numéro du conteneur, qui a été renvoyée par le "docker exécuter la commande" ci-dessus. Maintenant que vous avez le mot de passe, vous avez besoin de l'adresse ip. Je reçois que par la pratique.
Et en regardant la "porte d'entrée" de l'adresse. Avec le mot de passe et l'adresse ip j'ai ensuite été en mesure de faire cette commande mysql à partir de l'EXTÉRIEUR du conteneur.
Où l'adresse ip et le mot de passe sont les valeurs que j'ai obtenu les deux précédentes panneau de commandes. Après que la commande a exécuter, je peux alors question d'une "afficher les bases de données de la commande" avec les résultats suivants.
Je me suis battu pendant un certain temps de l'essayer en modifiant le Dockerfile. Je pense qu'il pourrait être possible, mais après un certain temps, j'ai trouvé la solution ci-dessus beaucoup plus rapide et plus simple.
Vous pouvez passer ON_CREATE_DB env paramètre sur le conteneur de démarrage.
Exemple de tutum README.md
docker run -d -p 3306:3306 -e ON_CREATE_DB="newdatabase" tutum/mysql