💡 v20.10.21 Docker를 사용했어요 :)
docker-compose.yml
작성.env
작성docker-compose
방식으로 Redis 컨테이너를 만들어 사용하는 방법을 기술합니다.
빈 프로젝트에 docker-compose.yml
파일을 생성하고 아래와 같이 작성합니다.
version: "3.8"
services:
redis: # container name
image: redis:6.2.6-alpine
ports: # 바인딩할 포트:내부 포트
- ${REDIS_BINDING_PORT}:${REDIS_PORT}
command: redis-server /usr/local/etc/redis/redis.conf
volumes: # 마운트할 볼륨 설정
- ${REDIS_DATA_PATH}:/data
- ${REDIS_DEFAULT_CONFIG_FILE}:/usr/local/etc/redis/redis.conf
restart: always
${변수}
부분은 환경 변수입니다.
필자는 (노출되면 안 되는) 중요 정보들 또는 자주 바뀌는 정보는 환경변수로 관리합니다.
(필자가 만든)환경변수
같은 경로에 .env
파일을 생성하고 아래와 같이 작성합니다.
# Docker setting
COMPOSE_PROJECT_NAME=redis-test
# Docker volume setting
REDIS_DATA_PATH=C:\_workspace\docker\test\volume\redis\data
REDIS_DEFAULT_CONFIG_FILE=C:\_workspace\docker\test\volume\redis\redis.conf
# etc setting
REDIS_BINDING_PORT=6389
REDIS_PORT=6379
Docker에서 제공하는 환경변수
💡 개인의 설정에 맞게 수정하세요 :)
Redis docker image에는 config 파일이 없습니다.
필자는 config 파일로 필요한 설정을 하기 때문에, 미리 config 파일이 host에 마운트 되도록 REDIS_DEFAULT_CONFIG_FILE
에 맞게 추가합니다.
💡 redis.conf 내용은 여기에 있어요 :)
💡 File mount
기본적으로 Docker는 폴더를 기준으로 마운트하기 때문에, host에 파일이 없다면 폴더를 만들게 됩니다.
하지만 로컬 마운트 경로에 파일을 두면, 해당 컨테이너에 파일이 overwrite 하게 됩니다.
default는 password가 설정되어있지 않습니다.
password 설정을 원한다면, requirepass
를 찾아 변경합니다.
이제 실행해보겠습니다.
$ docker compose up -d
잘 실행되었습니다.😎
p3x redis ui처럼 client tool이 있다면, 쉽게 연결이 가능합니다.
접속이 안..되네요..?😅
Docker container에 접속해 테스트를 해봤습니다.
$ docker exec -it [container id] /bin/sh
잘 되네??????
해당 속성은 설정한 IP만 접속을 허가하겠다는 보안적인 설정입니다.
기본 설정은 내부 접속만 허용입니다.
docker container에서 서비스 확인 시, 허용된 IP가 127.0.0.1
로 설정된 걸 확인할 수 있습니다.
bind 속성의 값을 외부 허용으로 변경 후 서비스 재시작을 합니다.
$ docker compose up -d
다시 docker container에서 서비스를 확인하면 모든 IP의 접속이 허용되도록 변경되었습니다.😎
💡 보안상 모든 IP 허용은 좋지 않다고 해요.(출처 : Connecting to Redis running in Docker Container from Host machine)
다른 좋은 방법 있으면 공유 부탁드려요 :)
다시 연결 시도하면..
잘 연결됐습니다.😎
💡 해당 내용들을 필자 GitHub에 올려두었어요. :)
과거에 나에게 감사합니다