Docker compose로 Redis 실행하기

긴가민가·2023년 1월 2일
2

Docker 사용기

목록 보기
2/2
post-thumbnail

💡 v20.10.21 Docker를 사용했어요 :)

🏃TL;DR

  1. docker-compose.yml 작성
  2. .env 작성
  3. 도커 컨테이너 실행
  4. 서비스 확인

docker-compose 방식으로 Redis 컨테이너를 만들어 사용하는 방법을 기술합니다.

환경 구성

docker-compose.yml

빈 프로젝트에 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

${변수} 부분은 환경 변수입니다.
필자는 (노출되면 안 되는) 중요 정보들 또는 자주 바뀌는 정보는 환경변수로 관리합니다.

(필자가 만든)환경변수

  • REDIS_DATA_PATH : data 관련 정보를 mount할 로컬 경로
  • REDIS_DEFAULT_CONFIG_FILE : 기본 설정 파일(redis.conf)을 mount할 경로와 파일명
  • REDIS_BINDING_PORT : Redis 포트에 바인딩할 포트
  • REDIS_PORT : Docker에서 실행되는 Redis 포트 (default 6379)

.env

같은 경로에 .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에서 제공하는 환경변수

  • COMPOSE_PROJECT_NAME : 컨테이너명을 지정

💡 개인의 설정에 맞게 수정하세요 :)


redis.conf

Redis docker image에는 config 파일이 없습니다.
필자는 config 파일로 필요한 설정을 하기 때문에, 미리 config 파일이 host에 마운트 되도록 REDIS_DEFAULT_CONFIG_FILE에 맞게 추가합니다.

💡 redis.conf 내용은 여기에 있어요 :)

💡 File mount
기본적으로 Docker는 폴더를 기준으로 마운트하기 때문에, host에 파일이 없다면 폴더를 만들게 됩니다.
하지만 로컬 마운트 경로에 파일을 두면, 해당 컨테이너에 파일이 overwrite 하게 됩니다.

password (권장)

default는 password가 설정되어있지 않습니다.
password 설정을 원한다면, requirepass를 찾아 변경합니다.

실행

이제 실행해보겠습니다.

$ docker compose up -d

잘 실행되었습니다.😎

연결 테스트

p3x redis ui처럼 client tool이 있다면, 쉽게 연결이 가능합니다.

접속이 안..되네요..?😅

Docker container에 접속해 테스트를 해봤습니다.

$ docker exec -it [container id] /bin/sh

잘 되네??????


bind 속성

해당 속성은 설정한 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에 올려두었어요. :)


의견은 언제든 댓글로 남겨주세요. 🙂

profile
미래의 내가 참고하려고 모아가는 중 :)

1개의 댓글

comment-user-thumbnail
2024년 9월 7일

과거에 나에게 감사합니다

답글 달기