[Docker] Docker 컨테이너와 redis 연결(feat. localhost)

Simple·2023년 2월 2일
1

트러블슈팅

목록 보기
10/13

[문제상황]

ec2에 docker-compose로 스프링을 띄우고, ec2 로컬에 실행한 redis와 연결이 안되고 있다.

[원인]

application.yml에 작성한 redis의 호스트인 localhost(127.0.0.1)의 주소와 docker의 로컬 호스트 주소가 다르기 때문이다.

redis:
	host: localhost
    port: 6379

[실행]

  1. host에 localhost 대신에 host.docker.internal로 수정한다.
    =>실패

  2. docker redis network를 구축한뒤 실행된 도커 컨테이너와 연결해준다
    =>실패

[해결]

  1. docker-compose.yml에 아래 extra_hosts를 추가해준뒤
    extra_hosts:
      - "host.docker.internal:host-gateway"

application.yml의 host를 host.docker.internal로 수정해준다.

redis:
	host: host.docker.internal
    port: 6379

redis 컨테이너를 host 모드로 띄운다.(Linux에서만 가능하다)

docker run --name redis --net host -v /data/redis:/data -d redis:alpine

(성공)

이 외에도 localhost 대신에 172.17.0.1를 작성하는 방법도 있지만, 컨테이너가 종료되었다가 다시 시작하면 아이피 주소가 바뀔 가능성이 있기 때문에 권하진 않는다.

profile
몰입하는 개발자

0개의 댓글