인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

config-servie 도커로 실행 시 에러 문의

작성

·

355

0

안녕하세요.

"섹션 16. 애플리케이션 배포 - Docker Container"을 학습하면서 config-service를 Docker로 만들어 실행하면 컨테이너 실행 됐다가 Exit가 되고, "docker logs config-service"로 로그를 보면 아래와 에러가 발생합니다. JDK11 , springboot 2.4.5 버전에 spring-cloud-starter-bootstrap 의존성은 추가 되어 있는 상태입니다. 답변 부탁드립니다. 감사합니다.

===================================================================

2024-03-22 06:50:22.104 WARN 1 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'healthContributorRegistry' defined in class path resource [org/springframework/boot/actuate/autoconfigure/health/HealthEndpointConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.actuate.health.HealthContributorRegistry]: Factory method 'healthContributorRegistry' threw exception; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'configServerHealthIndicator' defined in class path resource [org/springframework/cloud/config/server/config/EnvironmentRepositoryConfiguration.class]: Unsatisfied dependency expressed through method 'configServerHealthIndicator' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.cloud.config.server.config.CompositeConfiguration': Unsatisfied dependency expressed through method 'setEnvironmentRepos' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'defaultEnvironmentRepository' defined in class path resource [org/springframework/cloud/config/server/config/DefaultRepositoryConfiguration.class]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: You need to configure a uri for the git repository.

2024-03-22 06:50:22.113 INFO 1 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'

2024-03-22 06:50:22.117 INFO 1 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat]

2024-03-22 06:50:22.134 INFO 1 --- [ main] ConditionEvaluationReportLoggingListener :

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.

2024-03-22 06:50:22.149 ERROR 1 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter :

***************************

APPLICATION FAILED TO START

***************************

Description:

Invalid config server configuration.

Action:

If you are using the git profile, you need to set a Git URI in your configuration. If you are using a native profile and have spring.cloud.config.server.bootstrap=true, you need to use a composite configuration.

===================================================================

스크린샷 2024-03-22 155548.png

 

답변 2

0

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

안녕하세요, 이도원입니다.

Config-Server를 Docker화 하여 실행하시려는 것 같습니다. 설정하신 정보 중 search-locations의 위치는 Local에서 실행하실 때의 기준 폴더이기 때문에, Docker로 실행하실 때는 변경되어야 하는데, 이 부분은 올려주신 application.yml의 내용을 확인해 보면, Local PC(Windows 등)의 경로가 아닌, 사용자 홈 디렉토리의 경로로 잘 변경하신 것 같습니다. 그 외 설정도 문제점은 없어 보입니다. 우선, 올려주신 내용 그대로 저희쪽에서도 테스트 해 보았을 때 (Local 환경, Docker 컨테이너 환경 모두) 해당 오류가 발생하지는 않았기 때문에, 추가 답변을 드리기는 어려운 상황입니다. 혹시 작업하신 config-service 프로젝트의 전체 코드를 공유해 주시거나, 실행 시 출력 되었던 전체 로그를 공유해 주시면, 다시한번 테스트 해 보도록 하겠습니다.

소스 코드는 아래 메일로 보내주시면 감사드리겠습니다.

edowon0623@gmail.com

0

안녕하세요, 인프런 AI 인턴입니다.

질문해주신 config-service가 Docker 내에서 실행 시 발생하는 오류 관련해서, 기 설정된 Git URI 문제로 보입니다. 로그 메시지에서 알 수 있듯이, Git 리포지토리의 URI 설정이 필요하다고 명시하고 있습니다. Docker 내에서 config-service를 실행시킨다면, 환경 변수 혹은 application.yml(혹은 bootstrap.yml) 내에 Git URI를 명확하게 지정해야 합니다.

이러한 문제는 일반적으로 Spring Cloud Config 서버 설정에 URI가 제대로 설정되지 않아 발생합니다. Spring Cloud Config는 환경 설정을 위해 Git 리포지토리나 파일 시스템에서 설정 파일을 불러오게 됩니다. 여기서 config 서버에게 Git URI가 제공되지 않았을 경우, 위와 같은 에러 메시지를 볼 수 있습니다.

도커로 config-service을 실행하실 때, 도커 컨테이너 환경 변수나 application.yml 파일에 git repository URI를 명시하는 것을 확인해야 합니다. 예를 들어 application.yml에서 Git 정보를 다음과 같이 명시할 수 있습니다:

spring:
  cloud:
    config:
      server:
        git:
          uri: [여러분의 Git 리포지토리 주소]
          # 기타 필요한 설정

이와 관련하여 유사한 문제를 해결한 기존 답변을 참고해보시길 권장합니다:
- “config-service docker 실행 시 오류”에서는 Docker를 사용하여 구성 서비스를 실행할 때 일어날 수 있는 문제와 이에 대한 해결 방법에 대해 설명하고 있습니다.
- “도커로 실행된 config-service 의 rabbitmq:5672 bind Exception”에서는 Docker 내에서 RabbitMQ와 연결 시 발생할 수 있는 인증 문제 및 그 해결책을 제공합니다.

질문하신 내용에 더 구체적으로 부합하는 답변은 아니지만, 문제 해결의 실마리를 제공할 수 있습니다. 참고로, 도커 컨테이너에서 환경 변수를 통해 설정 값을 제공하는 방법도 고려해 보세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기