Comment se connecter localement à l'hébergé de base de données MySQL avec le conteneur docker
Par docker-compose.yml
je suis en mesure d'exécuter l'application. Maintenant, nous voulons déplacer l'application vers la production, Mais nous ne voulons pas utiliser le conteneur de la base de données. Donc, est-il un moyen pour que je puisse connecter mon local de base de données MySQL avec l'application à l'aide docker-compose
?
Mon menu fixe-composer.yml ressemble:
version: '3'
services:
web-app:
build:
context: .
dockerfile: web-app/Dockerfile
ports:
- 8080:8080
links:
- app-db
app-db:
build:
context: .
dockerfile: app-db/Dockerfile
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=Optimize
ports:
- 3306:3306
Au lieu de app-db
partie, je tiens juste à vous connecter à mon hébergés localement mysql
base de données.
Double Possible de Depuis l'intérieur d'un conteneur Docker, comment puis-je me connecter à localhost de la machine?
OriginalL'auteur Ben.Bean | 2017-06-14
Vous devez vous connecter pour publier un commentaire.
Trouver l'hôte ip de l'appareil dans le support réseau. Si vous utilisez le panneau-composer.yml
version: "3"
c'est probablement que cette IP est:172.18.0.1
, mais le confirmer la recherche de la "porte d'entrée" de votre conteneur (votre hôte):Donc à l'intérieur de votre panneau de point d'application de MySQL comme ceci:
172.18.0.1:3306
(peut-être dans un fichier de configuration). Prendre en compte que l'IP est fixe tant que le docker réseau toujours le même (le réseau est créé par docker-composer, et il n'est pas supprimé, à moins que vous nedocker-compose down
)Aussi, vérifiez que votre serveur MySQL est à l'écoute de l'ensemble de ses interfaces. Dans votre
my.cnf
de recherche pourbind-address
qui devrait être0.0.0.0
(tenir compte des problèmes de sécurité si votre serveur a l'IP publique).Comme alternative, vous pouvez apporter à l'contenant le même réseau que votre hôte, afin de partager le localhost, de sorte que le conteneur trouverez mysql. Utiliser le mode réseau "accueil":
Ensuite, pointez dans votre
hibernate.properties
à mysql comme ceci:localhost:3306
docker inspect <container-id-or-name> | grep Gateway "Gateway": "", "IPv6Gateway": "", "Gateway": "172.19.0.1", "IPv6Gateway": "",
mais une fois que je compose, j'ai eu ce dans fichier journalSavez-vous où est le fichier de configuration de votre application? Pour le mettre à jour en conséquence
tu veux dire les applications web
hibernate.properties
fichier?Peut-être! Voyez-vous l'hôte de mysql? Essayez de mettre 172.19.0.1 et le port 3306, qui est l'IP de votre hôte à partir de docker point de vue
dans ce fichier j'ai changé
jdbc.url = jdbc:mysql://localhost:3306/optimize1
àjdbc.url = jdbc:mysql://172.19.0.1:3306/optimize1
mais encore ce n'est pas en mesure de se connecter. Elle présente même dans les journaux comme welOriginalL'auteur Robert
Autoriser à l'aide de mysqld.cnf
enregistrer votre fichier et redémarrer le serveur mysql
de connexion à Mysql
Trouver votre IP
Et à utiliser dans votre conteneur docker 192.168.x.x
OriginalL'auteur Thanuja
Suffit d'utiliser 172.17.0.1 à l'intérieur de docker. L'adresse ip statique de la machine hôte
OriginalL'auteur Alex Kapustin