docker-compose: Problème de communication entre un microservice et BDD mysql

Younes-Zirari 06/05/2020
RÉSOLU

Bonjour,

J'essaye de lancer docker-compose.yml qui contient un MicroService et une BDD mysql.
J'ai un problème de communication entre le microservice et BDD
NB: j'ai utilise docker sous Windows avec WSL.
 Merci pour votre aide.

========Erreur===========
cinema-service_1  | 2020-05-06 16:11:54.096  INFO 1 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
db_1              | 2020-05-06T16:11:54.729925Z 9 [Note] Access denied for user 'root'@'172.28.0.3' (using password: NO)
cinema-service_1  | 2020-05-06 16:11:55.770 ERROR 1 --- [           main] com.zaxxer.hikari.pool.HikariPool        : HikariPool-1 - Exception during pool initialization.
cinema-service_1  |
cinema-service_1  | java.sql.SQLException: Access denied for user 'root'@'172.28.0.3' (using password: NO)
cinema-service_1  |     at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) ~[mysql-connector-java-8.0.19.jar!/:8.0.19]
===================================
===========docker-compose.yml============
version: '3.3'
services:
  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: 'cinema'
      # So you don't have to use root, but you can if you like
      #MYSQL_USER: 'cinema_user'
      # You can use whatever password you like
      #MYSQL_PASSWORD: 'cinema_root'
      # Password for root access
      MYSQL_ROOT_PASSWORD: 'rootroot'
    ports:
      # <Port exposed> : < MySQL Port running inside container>
      - 3306:3306
    expose:
      # Opensport 3306 on the container
      - 3306
      # Where our data will be persisted
    volumes:
      - db-volume:/var/lib/mysql
      
  cinema-service:
    image: yzirari/microservice-docker-cinema:0.0.1-SNAPSHOT
    environment:
      MYSQL_DATABASE: 'cinema'
    links:
      - db
    depends_on:
      - db

volumes:
  db-volume: {}
=======================
06/05/2020 à 23:59

11 commentaires

ajdaini-hatim
Membre Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Membre Rédacteur Secouriste Actif

Bonjour @Younes-Zirari bienvenue déjà dans la communauté devopssec. Pour répondre à ton problème puis-je voir le code qui te permet de te connecter  à ta base de données  mysql ?

07/05/2020 à 12:04

Merci @ajdaini-hatim, votre travail est remarquable :)

spring.datasource.url=jdbc:mysql://db:3306/cinema?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=
07/05/2020 à 18:34
spring.datasource.url=jdbc:mysql://db:3306/cinema?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=

Peux être un problème sur le forum. 

Ton message est affiché après mon dernier poste.

08/05/2020 à 10:50
ajdaini-hatim
Membre Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Membre Rédacteur Secouriste Actif

Re @Younes-Zirari merci pour ta remarque ! En effet, je suis en train d'améliorer le site web notamment le système de Forum et de commentaires. Tu peux maintenant éditer ton commentaire si tu le souhaites sans charger entièrement  la page. Bref, pour revenir au sujet principal, je vais tester ton fichier docker-compose et revenir vers toi, une fois que j'ai plus d'informations 😀.

08/05/2020 à 21:16
ajdaini-hatim
Membre Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Membre Rédacteur Secouriste Actif

Bonjour  @Younes-Zirari je ne retrouve pas ton image "yzirari/microservice-docker-cinema:0.0.1-SNAPSHOT" tu viens de la supprimer ?

13/05/2020 à 10:39

Salut @ajdaini-hatim.

J'ai fait un push. yzirari/microservice-docker-cinema est disponible sur hub.docker

13/05/2020 à 13:49
ajdaini-hatim
Membre Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Membre Rédacteur Secouriste Actif

Salut @Younes-Zirari j'obtiens l'erreur suivante :

db_1              | 2020-05-13T11:57:59.782788Z 2 [Note] Access denied for user 'root'@'172.19.0.3' (using password: NO)
cinema-service_1  | 2020-05-13 11:58:00.833 ERROR 1 --- [           main] com.zaxxer.hikari.pool.HikariPool        : HikariPool-1 - Exception during pool initialization.
cinema-service_1  | 
cinema-service_1  | java.sql.SQLException: Access denied for user 'root'@'172.19.0.3' (using password: NO)

2 questions, utilises-tu le mot de passe 'rootroot' dans ta variable spring.datasource.password ? Autre question, comment est architecturé ton serveur web et base de données, sont-ils tous les 2 sur le même serveur ou ils sont séparés sur un serveur chacun ?

13/05/2020 à 14:09

C'est le meme erreur que moi.

Comme j'ai commenté MYSQL_USER et MYSQL_PASSWORD alors les valeurs par défaut sont:  user= "root" et password = ""  (vide)

    environment:
      MYSQL_DATABASE: 'cinema'
      # So you don't have to use root, but you can if you like
      #MYSQL_USER: 'cinema_user'
      # You can use whatever password you like
      #MYSQL_PASSWORD: 'cinema_root'
      # Password for root access
      MYSQL_ROOT_PASSWORD: 'rootroot'

d'ou la conf suivante sur le microservice-docker-cinema:

spring.datasource.url=jdbc:mysql://db:3306/cinema?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=

- sont-ils tous les 2 sur le même serveur ou ils sont séparés sur un serveur chacun ?

pour moi 2 conteneurs (chaqu'un dans son propre conteneur)

Modifié le 13/05/2020 à 16:05
ajdaini-hatim
Membre Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Membre Rédacteur Secouriste Actif

@Younes-Zirari ta ligne MYSQL_ROOT_PASSWORD n'est pas commenté, donc tu dois utiliser ce mot de passe. De plus je pense que tu dois laisser ta chaîne de caractère vide car à vérifier le conteneur doit utiliser un mot de passe par défaut quand celui ci n'est pas spécifié.

Autre chose, quand tu dis que ce sont 2 serveurs séparés, tu veux dire par là que tu as ton conteneur cinema-service sur un serveur physique/virtuel différent de celui de ton conteneur db

13/05/2020 à 17:41

Hello hatim.

Effectivement ça fonctionne avec la conf suivante 😃

spring.datasource.url=jdbc:mysql://db:3306/cinema?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=rootroot

Les deux conteneur sont sur le meme serveur physique (machine local).

Merci pour ton aide 🙂

13/05/2020 à 17:52
ajdaini-hatim
Membre Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Membre Rédacteur Secouriste Actif

Cool, content de t'avoir aidé, bon courage pour la suite 🤞

13/05/2020 à 18:25

Laisser une réponse

Vous devez être connecté pour poster un message !

Rejoindre la communauté

Recevoir les derniers articles gratuitement en créant un compte !

S'inscrire