강의

멘토링

커뮤니티

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

blue-sky님의 프로필 이미지
blue-sky

작성한 질문수

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

Micrometer 구현

config-service를 터미널에서 실행할때 native, git 설정파일 인식 문제

작성

·

143

0

삭제된 글입니다

답변 3

0

blue-sky님의 프로필 이미지
blue-sky
질문자

Terminal로 했을때는 native 뿐 아니라 git도 역시 로드하지 못합니다.

0

blue-sky님의 프로필 이미지
blue-sky
질문자

제 질문을 잘못 이해하신것 같습니다. ㅠ


제 질문은 강의의 내용과 관련하여 config-service 를 터미널에서 실행시키는 경우...
(mvn spring-boot:run 혹은  java -jar ./target/config-service-0.0.1-SNAPSHOT.jar 실행 모두)
config-service의 application.yml의 값에 설정된 아래의 값..
즉,  search-locations 의 native-file-repo 디렉토리의 값을 가져오지 못한다는것입니다.

spring:
application:
name: config-service
rabbitmq:
host: 127.0.0.1
port: 5672
username: guest
password: guest
profiles:
active: native
cloud:
config:
server:
native:
search-locations: file://${user.home}/development/study/springcloud/native-file-repo

아래는 정상적으로 native-file-repo 디렉토리의값이 로드되었을때의  config-service 의 로그입니다.  

2021-07-27 17:06:27.885  INFO 21223 --- [nio-8888-exec-1] o.s.c.c.s.e.NativeEnvironmentRepository  : Adding property source: Config resource 'file [/Users/bluesky/development/study/springcloud/native-file-repo/ecommerce.yml]' via location 'file:///Users/bluesky/development/study/springcloud/native-file-repo/'
2021-07-27 17:06:27.885  INFO 21223 --- [nio-8888-exec-1] o.s.c.c.s.e.NativeEnvironmentRepository  : Adding property source: Config resource 'file [/Users/bluesky/development/study/springcloud/native-file-repo/application.yml]' via location 'file:///Users/bluesky/development/study/springcloud/native-file-repo/'
2021-07-27 17:06:32.293  INFO 21223 --- [nio-8888-exec-2] o.s.c.c.s.e.NativeEnvironmentRepository  : Adding property source: Config resource 'file [/Users/bluesky/development/study/springcloud/native-file-repo/ecommerce.yml]' via location 'file:///Users/bluesky/development/study/springcloud/native-file-repo/'
2021-07-27 17:06:32.294  INFO 21223 --- [nio-8888-exec-2] o.s.c.c.s.e.NativeEnvironmentRepository  : Adding property source: Config resource 'file [/Users/bluesky/development/study/springcloud/native-file-repo/application.yml]' via location 'file:///Users/bluesky/development/study/springcloud/native-file-repo/'
2021-07-27 17:06:38.071  INFO 21223 --- [nio-8888-exec-3] o.s.c.c.s.e.NativeEnvironmentRepository  : Adding property source: Config resource 'file [/Users/bluesky/development/study/springcloud/native-file-repo/user-service.yml]' via location 'file:///Users/bluesky/development/study/springcloud/native-file-repo/'
2021-07-27 17:06:38.071  INFO 21223 --- [nio-8888-exec-3] o.s.c.c.s.e.NativeEnvironmentRepository  : Adding property source: Config resource 'file [/Users/bluesky/development/study/springcloud/native-file-repo/application.yml]' via location 'file:///Users/bluesky/development/study/springcloud/native-file-repo/'
2021-07-27 17:06:51.059  INFO 21223 --- [nio-8888-exec-4] o.s.c.c.s.e.NativeEnvironmentRepository  : Adding property source: Config resource 'file [/Users/bluesky/development/study/springcloud/native-file-repo/user-service.yml]' via location 'file:///Users/bluesky/development/study/springcloud/native-file-repo/'
2021-07-27 17:06:51.059  INFO 21223 --- [nio-8888-exec-4] o.s.c.c.s.e.NativeEnvironmentRepository  : Adding property source: Config resource 'file [/Users/bluesky/development/study/springcloud/native-file-repo/application.yml]' via location 'file:///Users/bluesky/development/study/springcloud/native-file-repo/'

위의 정상적인 로그값은 은 InteliJ에서 실행한 것이며 Terminal에서 실행했을때는 위와같은 정상적인 로그가 보이지 않습니다.

그렇기 때문에 Terminal에서 config-service를 실행하면 native-file-repo 디렉토리내에서 yml이 정상로드가 되지 않아 user-service에서 로그인이 되지 않는다는것이 원질문글의 내용이었습니다.

그리고 기타 다른 microservice에서도 config-service의 설정값이 필요한 부분에선 에러가 납니다.

무엇이 문제일까요? 

Mac의 Terminal에서 ${user.home} 을 인지하지 못해서 일까라는 생각으로 ${user.home} 변수 대신 디렉토리경로를 절대경로 문자열로 직접 등록해봤지만 이것은 관계가 없었습니다. 

config-service의 profiles는 native로 Terminal로 실행하든 혹은 Intelij로 실행하든 관계없이 잘 찍힙니다. 

그리고 config-service에서는 어떤 에러도 출력되지 않습니다. 
user-service의 profile은 default 로 현 상황과는 아무관계 없습니다.

며칠째 이걸로 헤매고 있는데 해결이 안되고 있습니다.

0

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

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

IntelliJ와 일반 Terminal에서 실행할 때의 차이점은 여러가지 있을 수 있지만, profile의 지정과 컴파일의 방법 등이 제일 다른 것 같습니다. 예를들어, Terminal에서

$ java -jar [패키지된 파일명].jar

와 같이 실행하기 위해서는 먼저 패키지가 생성된 다음 실행되어야 합니다. (위와 같이 실행할 경우는 profile은 default)

이에 비해, IntelliJ에서는 애플리케이션을 실행할 때 profile을 "Edit Configurations" 항목에서 지정해 놓고, 계속 사용할 수 있으며, 실행 시 자동으로 빌드가 되어 사용됩니다. 

user-service 애플리케이션을 기동하게 되면, 출력되는 로그 상단에 (Spring Boot라는 배너 바로 다음 부근) 현재 애플리케이션이 어떤 profile로 기동되었는지, 어떤 config 설정이 되었는지 출력됩니다. Terminal에서 오류가 발생하신다면 먼저, 위 항목을 확인하시고 지정한 config가 사용되었는지 확인해 보시기 바랍니다. 

감사합니다. 

blue-sky님의 프로필 이미지
blue-sky

작성한 질문수

질문하기