Mon projet consiste en un service REST, qui est enregistré dans Eureka. J'utilise également le proxy Zuul pour gérer les demandes comme indiqué dans this image. Il fonctionne parfaitement sur mon ordinateur de manière locale mais lorsque je crée un conteneur docker pour mon service, il ne démarre pas. Les étapes que j'ai suivies:Impossible de monter mon service Eureka Spring REST dans un conteneur Docker
- J'ai créé un conteneur Docker pour chaque service: serveur Eureka, passerelle API Zuul, le service REST et ma base de données Mysql.
- Je reçois les données de mon service à partir d'une procédure stockée dans la base de données, cette connexion a été testée et cela fonctionne.
- Je démarre toutes les instances avec docker-composer, Eureka et les instances de base de données restent actives mais l'instance de service REST s'arrête brutalement. Zuul n'est pas encore implémenté.
L'erreur:
matriculas-ms_1 | org.springframework.context.ApplicationContextException: Failed to start bean 'org.springframework.cloud.netflix.eureka.EurekaDiscoveryClientConfiguration'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'scopedTarget.eurekaClient' defined in class path resource [org/springframework/cloud/netflix/eureka/EurekaClientAutoConfiguration$RefreshableEurekaClientConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.netflix.discovery.EurekaClient]: Factory method 'eurekaClient' threw exception; nested exception is java.lang.RuntimeException: Failed to initialize DiscoveryClient!
Voici le docker-compose.yml
version: '3.3'
services:
srclbd:
build: ./srclbd
ports:
- "3307:3306"
expose:
- "3306"
volumes:
- ./srclbd/data:/var/lib/mysql
eureka:
build: ./Eureka
ports:
- "8761:8761"
expose:
- "8761"
matriculas-ms:
build: ./matriculas-ms
ports:
- "3333:3333"
expose:
- "3333"
depends_on:
- srclbd
- eureka
links:
- srclbd
- eureka
environment:
- DATABASE_HOST=srclbd
- EUREKA_HOST=eureka
Dockerfile de Eureka:
FROM java:8
ADD /target/eureka-0.0.1-SNAPSHOT.jar eureka-0.0.1-SNAPSHOT.jar
ENTRYPOINT ["java","-jar","eureka-0.0.1-SNAPSHOT.jar"]
service REST Dockerfile:
FROM java:8
ADD /target/matriculas-service-0.0.1-SNAPSHOT.jar matriculas-service- 0.0.1-SNAPSHOT.jar
ENTRYPOINT ["java","-jar","matriculas-service-0.0.1-SNAPSHOT.jar","-Xdebug -Xrunjdwp:server=y,transport=dt_socket,suspend=n"]
Voici mon projet sur github
Quelle est mon erreur?
Pourquoi copiez-vous les fichiers jar? Vous devriez les construire dans votre dockerfile lui-même –