백엔드 개발을 할 때는 redis만 도커로 띄워놓고 사용했는데, 기능 개발이 끝난 후 프론트에서 작업할 때에는 프론트+백엔드 도커에 +redis까지 띄워줘야 된다는 사실을 깨닫고 부랴부랴 만들었다.
Redis 컨테이너 하나만 사용
redis 이미지로 docker 컨테이너 만들기
docker pull redis //이미지 받아오기
docker images //받아온 이미지 확인
docker run --name [name] -d -p 6379:6379 redis //실행
docker ps -a //컨테이너 확인
redis client 접속하기
docker exec -it [name] /bin/bash
redis-cli
redis key, value 확인 명령
keys *
get [key]
set [key] [value]
한 번 만들어 두면 다음부터는 도커 데스크탑 앱에서 간편하게 껐다 켰다 할 수 있다.
여러 컨테이너와 Redis를 Docker Compose up으로 사용
프론트 분들을 위해 Redis도 Docker Compmose up 명령으로 한꺼번에 올릴 수 있게 했다.
Redis DockerFile
FROM redis:latest
CMD ["redis-server","usr/local/redis/redis.conf"]
Docker-compose.yml
version: "3"
services:
frontend:
front 설정
networks:
- app-tier
backend:
back 설정
networks:
- app-tier
external_links:
- redis
redis:
image: redis:latest
container_name: redis
hostname: redis
ports:
- 6379:6379
labels:
- "name=redis"
- "mode=standalone"
extra_hosts:
- host.docker.internal:host-gateway
networks:
- app-tier
networks:
app-tier:
driver: bridge
docker-compose 파일을 만들 때 삽질을 했는데, redis에 networks 설정을 해주는 것을 깜빡해 버려서 스프링 서버에서 레디스 서버에 접근을 못해줬다. external_links를 해주면 외부 컨테이너를 이어주고 (이어주기만 하나?) extra_hosts를 이용사면 다른 컨테이너에서 host.docker.internal을 localhost 처럼 사용할 수 있다던데 아무것도 작동하지 않았다. 그런데 networks를 추가하니 잘 됐다.
이런 오류가 날 때는 오타나..빠트린 부분 때문에 문제가 발생하는 경우가 많으니 조심하자!
application-redis.properties
spring.redis.host=host.docker.internal
spring.redis.port=6379
잘 생성되었고, docker-compose up 명령으로 정상 작동된다!