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

foobar님의 프로필 이미지

작성한 질문수

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

User Microservice

ec2에서 docker pull 해서 백그라운드로 개인 프로젝트 진행중에 문제발생하여 질문드립니다.

작성

·

645

0

안보일 까봐 복사했습니다.

2022-05-02 07:18:24.438  INFO 1 --- [           main] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://localhost:8888

2022-05-02 07:18:24.772  INFO 1 --- [           main] c.c.c.ConfigServicePropertySourceLocator : Connect Timeout Exception on Url - http://localhost:8888. Will be trying the next url if available

2022-05-02 07:18:24.773  WARN 1 --- [           main] c.c.c.ConfigServicePropertySourceLocator : Could not locate PropertySource: I/O error on GET request for "http://localhost:8888/capstone-cell-service/default": Connection refused; nested exception is java.net.ConnectException: Connection refused

2022-05-02 07:18:24.781  INFO 1 --- [           main] c.e.c.CapstoneCellServiceApplication     : No active profile set, falling back to 1 default profile: "default"

* 그래서 라고생각하는데 회원가입은 제대로 진행되는 반면, 로그인 시도 시 ,

2022-05-02 10:10:21.244 ERROR 1 --- [o-auto-1-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception

 

java.lang.NumberFormatException: Cannot parse null string

at java.base/java.lang.Long.parseLong(Long.java:685) ~[na:na]

at java.base/java.lang.Long.parseLong(Long.java:847) ~[na:na]

at com.example.capstoneuserservice.security.AuthenticationFilter.successfulAuthentication(AuthenticationFilter.java:71) ~[classes!/:1.0]

at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:232) ~[spring-security-web-5.5.5.jar!/:5.5.5]

at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212) ~[spring-security-web-5.5.5.jar!/:5.5.5]

오류가 발생하면서 못읽어오는 듯한 모습을 보여주는것 같습니다.. 

안녕하세요 강사님. 강사님 강의듣고 프로젝트 진행중에 있는 학생입니다. 수업을 듣고 로컬에서 진행하는 것이 아닌 ec2에서 진행하고있습니다. docker hub에 push한 image를 ec2 서버로 접속 후 pull 하여 백그라운드로 run하여 구성하였습니다.
 
그런데 회원가입은 진행이 잘 됩니다만 로그인 실행시 long에 들어가는 token.expiration.time 이었나 null로 들어와서, 왠지 봤더니 아예 github에 public으로 존재하는 application.yml 파일을 읽어 오지 못하고있는것 같습니다.
 
저의 application.yml이 존재하는 깃허브 주소는
https://github.com/KimTaeKang57/capstone-cloud-config.git

입니다만. WARN 오류를 잘 보면 연결을 하지못하는 것같은데요,

user-service의 bootstratp.yml 파일 내용은

spring:
cloud:
config:
uri: http://127.0.0.1:8888
name: application

다음과같고, config-server의 application.yml은

spring:
application:
name: capstone-configure-service
cloud:
config:
server:
git:
uri: https://github.com/KimTaeKang57/capstone-cloud-config.git
default-label: master
enabled: true

다음과 같이 되어있습니다. 그런데 ec2 서버에서 해서 그런가요.

http://localhost:8888/../default에 접근을 하지못하는 오류가 발생하여 탐색과 고민끝에 질문드립니다.

- configure-server run
: docker run -d -p 8888:8888 —network ecommerce-network -e "spring.profiles.active-default" —name config-service zizoen123/capstone-configure-server:1.0
- user-service run
: docker run -d --network ecommerce-network --name user-service -e "eureka.client.serviceUrl.defaultZone=http://discovery-service:8761/eureka/" -e "spring.datasource.url=jdbc:mariadb://mariadb:3306/capstone" zizoen123/capstone-user-service:1.0
 
run 명령어들은 다음과같습니다.. 뭔가 빠뜨린게 있을까요? 따로 kafka나 zipkin 등등은 모두 사용하지 않고 mariadb만 사용했습니다.
 
 

답변 1

1

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

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

문의하신 내용은 EC2 환경에서 Docker로 서비스를 기동했을 때 문제인것 같습니다. Docker 컨테이너 형태로 서비스를 실행하실때, 다른 서비스와의 연결을 위해 localhost(127.0.0.1)을 사용하시면 안됩니다. Docker 컨테이너는 하나의 가상PC라고 보시면 이해하시기 쉬울 것 같습니다. 2개의 서로 다른 PC(Server1, Server2라고 가정)가 있다고 가정할 때, Server1에서 Server2를 접속하려는 의도로 localhost를 사용하면, 이것은 Server1 자신을 가리키는 주소가 되기 때문에, 정상적인 접속이 되지 않습니다. 따라서, 올려주신 오류에 보면, http://127.0.0.01:8888로 접속이 되지 않는다고 나온 것 같습니다. config-service(http://127.0.0.01:8888)에 접속이 되어야지만, git으로 연결을 하던 로컬로 연결하던 configuration 정보를 읽어 올 텐데, user-service에서 config-service로의 연결이 되지 않은 것 같습니다. 

user-service를 실행하실 때, config-service의 위치 정보를 -e 옵션으로 추가해 보시기 바랍니다. 다음은 제가 실행했던 Docker 컨테이너 실행 명령어입니다. 

 

docker run -d --network ecommerce-network \

  --name user-service \

-e "spring.cloud.config.uri=http://config-service:8888" \

-e "spring.rabbitmq.host=rabbitmq" \

-e "spring.zipkin.base-url=http://zipkin:9411" \

-e "eureka.client.serviceUrl.defaultZone=http://discovery-service:8761/eureka/" \

-e "logging.file=/api-logs/users-ws.log" \

edowon0623/user-service

 

확인해 보시고 문의사항 있으시면 다시 글 남겨 주세요. 

 

감사합니다. 

foobar님의 프로필 이미지
foobar
질문자

감사합니다. 여러방면으로 찾아보고 연결에 성공하였습니다. 딱 강사님 말씀대로였네요

foobar님의 프로필 이미지

작성한 질문수

질문하기