Redis
이 전 글에서 redis를 application.properties에 아래와 같이 설정했다.
1
spring.redis.host = host.docker.internal
host.docker.internal은 Docker for Windows 및 Docker for Mac에서 로컬 호스트를 가리키는 특수한 DNS 이름이다.
따라서 Linux에서는 이 이름이 제대로 동작하지 않기 때문에 환경변수를 수정해줘야한다.
만약 이를 놓쳤다면
UnknownHostException: host.docker.internal: Name or service not known 라는 에러를 볼 수 있을 것이다.
docker redis
Redis 서버를 백그라운드에서 실행하며, 호스트의 6379 포트를 통해 해당 Redis 서버에 접근
1
docker run -d --name redis-container -p 6379:6379 redis
docker run
: Docker 이미지를 실행하는 명령어-d
: 백그라운드에서 실행한다.--name redis-container
: 실행되는 container에 이름을 지정한다. → “redis-container”로 설정-p 6379:6379
: host의 6379 port와 container의 6379 port를 연결한다. → host에서 Redis에 접근하기 위한 포트 포워딩을 설정한다.redis
: 사용할 Docker 이미지의 이름이다. → Redis 이미지를 사용했다.
redis container ip 주소 확인하기
가장 마지막에 있는 redis-container
부분만 본인 container 이름으로 수정하면 된다.
1
docker inspect -f {\{range .NetworkSettings.Networks}}{\{.IPAddress}}{\{end}} redis-container
이렇게 입력하면 redis-container
컨테이너의 IP 주소를 출력해준다.
환경변수 적용하기
ip 주소를 환경변수에 적용해준다.
예시로 1.1.1로 작성
1
spring.redis.host = 1.1.1
docker-compose를 이용하면, 컨테이너 명으로 해당 컨테이너에 접근할 수 있다는 글을 본적이 있는데
나는 docker-compose를 이용하지 않았고 컨테이너 명을 사용하면 Name or service not known 에러가 뜬다.
따라서 ip 주소로 수정을 했고 오류가 나타나지 않게 되었다.