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 :
-Application | -Frontend (pas encore implémenté dans Docker) -Backend (springAPI) | -fichier docker -Python (flaskAPI) (pas encore implémenté dans Docker) docker-compose.yml
docker-compose.yml ressemble à ceci :
version : '3.9' prestations de service: base de données : image : mysql : dernière redémarrer : toujours environnement: MYSQL_ROOT_PASSWORD :MYSQL_DATABASE : ma base de données MYSQL_USER : MYSQL_PASSWORD : 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 :
Le fichier docker de springapi ressemble à ceci :
# 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"]
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 :
`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.`
J'ai essayé de reconfigurer les paramètres de mon application comme ceci :
spring.datasource.url=jdbc:mysql://localhost:8888/mydb spring.datasource.username=spring.datasource.password= spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
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.)
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?
Modifier ce que j'ai essayé jusqu'à présent
db : image : mysql : dernière redémarrer : toujours nom_conteneur : sql-db
Puis modifiez les paramètres d'application :
spring.datasource.url=jdbc:mysql://sql-db:8888/mydb (et aussi avec sql-db:3306);
Mais cela donne toujours la même erreur.
Spécifiez un nom de conteneur pour votre service de base de données dans le fichier de composition Docker
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 à