[Wherehouse] Docker Container간 통신 에러

Zoonmy·2025년 4월 2일

Wherehouse

목록 보기
2/3

✨ Eureka Client가 Eureka Server에 등록되지 않는 문제 해결

📌 문제 상황

Docker 컨테이너들은 정상적으로 실행되고 있지만, eureka-server에서 eureka-client를 인식하지 못하는 문제가 발생

아래와 같이 Eureka Dashboard에서 Eureka Client가 등록되지 않는 것을 확인할 수 있었습니다.

또한, eureka-client의 로그를 확인해 보니 Eureka Server에 정상적으로 등록되지 않은 것을 확인할 수 있었습니다.


🔎 원인 분석

  1. Docker 네트워크 문제
    • 기본적으로 Docker 컨테이너들은 개별적인 네트워크 인터페이스를 가짐
    • 따라서, 컨테이너 간 통신을 위해서는 동일한 네트워크를 사용해야 함
    • Eureka ServerEureka Client서로 다른 네트워크에서 실행 중이라면 통신이 불가능
  2. Eureka Client의 eureka.instance.hostname 설정 문제
    • 기본적으로 Eureka Client는 자신의 hostname을 기반으로 Eureka Server에 등록
    • 그러나 Docker 환경에서는 hostname이 내부 컨테이너 ID로 설정될 수 있음
    • 이로 인해, Eureka Server가 Eureka Client를 올바르게 인식하지 못하는 문제 발생

✅ 문제 해결 방법

🚀 1) Docker 네트워크 설정

Eureka Server와 Eureka Client가 같은 네트워크에서 실행될 수 있도록 docker network를 설정

sudo docker network create eureka-network

해당 네트워크를 생성하면, Eureka Server와 Eureka Client가 같은 네트워크에서 실행될 수 있습니다.


🔧 2) Docker 실행 시 네트워크 옵션 추가

이제 컨테이너를 실행할 때, 같은 네트워크(eureka-network)를 사용하도록 설정해야 합니다.


ssh "$EC2_USER@$EC2_DEV_HOST" "
    sudo docker login -u '$DOCKERHUB_USERNAME' -p '$DOCKERHUB_PASSWORD' &&
    sudo docker network create eureka-network || true &&
    sudo docker pull $IMAGE_TAG &&
    sudo docker stop $IMAGE_NAME || true &&
    sudo docker rm $IMAGE_NAME || true &&
    sudo docker run -d --network eureka-network -p $PORT:$PORT --name $IMAGE_NAME $IMAGE_TAG
"

설명

  • sudo docker network create eureka-network || true
    • 이미 네트워크가 존재할 경우 오류를 방지하고 넘어감
  • sudo docker run -d --network eureka-network
    • 컨테이너를 실행할 때 eureka-network 네트워크에 연결

🎯 최종 결과

이제 Eureka Server에서 Eureka Client가 정상적으로 등록하여 해결

profile
열시미 해야쥐

0개의 댓글