L'application Springboot ne peut pas établir de connexion avec la base de données SQL exécutée sur Docker
P粉156532706
P粉156532706 2023-08-29 09:43:41
0
1
687
<p>J'ai un projet en cours d'exécution dans localhost utilisant intellij comme instance Springboot, en utilisant le SQL de Xampp sans aucun problème. Cela fonctionne très bien. Mais maintenant, je veux tout déployer sur Docker. J'ai donc créé un fichier dockerfile et un fichier docker-compose up dans mon répertoire comme ceci : </p> <pre class="brush:php;toolbar:false;">-Application | -Frontend (pas encore implémenté dans Docker) -Backend (springAPI) | -fichier docker -Python (flaskAPI) (pas encore implémenté dans Docker) docker-compose.yml</pre> <p>docker-compose.yml ressemble à ceci : </p> <pre class="brush:php;toolbar:false;">version : '3.9' prestations de service: base de données : image : mysql : dernière redémarrer : toujours environnement: MYSQL_ROOT_PASSWORD : <pass> MYSQL_DATABASE : ma base de données MYSQL_USER : <utilisateur> MYSQL_PASSWORD : <passe> ports : - "3306:3306" tomes : - ./data:/var/lib/mysql phpmyadmin : image : phpmyadmin/phpmyadmin:dernière redémarrer : toujours dépend de: -db ports : - "8888:80" environnement: PMA_HOST : base de données MYSQL_ROOT_PASSWORD : exemple API de printemps : image : spring-api : dernière ports : - "8080:8080" dépend de: -db tomes : données de base de données : données mysql :</pre> <p>Le fichier docker de springapi ressemble à ceci :</p> <pre class="brush:php;toolbar:false;"># Utiliser un runtime OpenJDK officiel comme image parent DE openjdk:17-jdk-slim # Définissez le répertoire de travail sur /app TRAVAIL/application # Copiez le fichier jar de l'application dans le conteneur COPIER build/libs/backendAPI.jar backendAPI.jar # Exécutez l'application CMD ["java", "-jar", "backendAPI.jar"]</pre> <p>Ceci peut être composé de conteneurs Docker et Run. Comment Java Spring Boot génère-t-il une erreur et s'arrête-t-il.L'erreur est : </p> <pre class="brush:php;toolbar:false;">`2023-03-06T12:25:37.603Z INFO 1 --- [main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Démarrage. .. 2023-03-06T12:25:38.685Z ERREUR 1 --- [main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception lors de l'initialisation du pool. com.mysql.cj.jdbc.exceptions.CommunicationsException : échec du lien de communication Le dernier paquet envoyé avec succès au serveur remonte à 0 milliseconde. Le pilote n'a reçu aucun paquet du serveur.`</pre> <p>J'ai essayé de reconfigurer les paramètres de mon application comme ceci : </p> <pre class="brush:php;toolbar:false;">spring.datasource.url=jdbc:mysql://localhost:8888/mydb spring.datasource.username=<theusername> spring.datasource.password=<thepassword> spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver</pre> <p>Mais cela n’a aucun effet. Parce qu'il continue de générer la même erreur. Le serveur SQL est accessible via l'URL indiquée. Donc, cela fonctionne bien (sauf ne pas avoir de droits d'administrateur, mais c'est un autre problème.) </p> <p>Cette configuration, avec quelques modifications apportées à application.settings, fonctionne très bien lorsque j'utilise uniquement Xammp et intellij. Mais maintenant, je ne peux pas le connecter. Qu'est-ce que j'oublie ici? </p> <p><strong>Modifier ce que j'ai essayé jusqu'à présent</strong></p> <pre class="brush:php;toolbar:false;">db : image : mysql : dernière redémarrer : toujours nom_conteneur : sql-db</pre> <p>Puis modifiez les paramètres d'application : </p> <pre class="brush:php;toolbar:false;">spring.datasource.url=jdbc:mysql://sql-db:8888/mydb (et aussi avec sql-db:3306)</pre> ; <p>Mais cela donne toujours la même erreur. </p>
P粉156532706
P粉156532706

répondre à tous(1)
P粉510127741

Spécifiez un nom de conteneur pour votre service de base de données dans le fichier de composition Docker

db:
    image: mysql:latest
    restart: always
    **container_name: db-container**

Ensuite, dans votre URL jdbc, vous devez référencer le nom du conteneur de base de données configuré et le port réellement configuré du conteneur de base de données.

Votre datasource.url ressemble donc à

spring.datasource.url=jdbc:mysql://db-container:3306/mydb
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal