Docker/환경 구성

[Docker] Docker Compose를 이용하여 Redis + Redis GUI(RedisInsight) 환경 구성 및 실행 방법

adjh54 2025. 3. 4. 20:01
728x170
해당 글에서는 Docker Compose를 이용하여 Redis와 Redis 데이터를 확인할 수 있는 GUI인 RedisInsight를 환경 구성하고 실행하는 방법에 대해 알아봅니다. 


 

 

💡 [참고]  Docker에 대해 더 궁금하시면 아래의 글을 참고하시면 도움이 됩니다.
분류 설명 링크
이해하기 Docker 환경 설치 및 실행 방법 https://adjh54.tistory.com/350
이해하기 Docker 기초 이론(아키텍처, 흐름, 주요 용어) https://adjh54.tistory.com/352
이해하기 Docker 컨테이너 라이프 사이클 & CLI https://adjh54.tistory.com/359
이해하기 DockerFile 이론 + Nginx 환경 구성 및 배포 방법 https://adjh54.tistory.com/414
이해하기 Docker Compose 이해하고 구성 https://adjh54.tistory.com/503
     
환경구성 DockerFile + Vault 환경 구성 및 배포 방법 https://adjh54.tistory.com/415
환경구성 DockerFile + React 환경 구성 및 배포 방법 https://adjh54.tistory.com/417
환경구성 DockerFile + Spring Boot 환경 구성 및 배포 방법 https://adjh54.tistory.com/420
환경구성 DockerFile + Redis 환경 구성 및 배포 방법 https://adjh54.tistory.com/449
환경구성 DockerFile + RabbitMQ 환경 구성 및 실행 방법 https://adjh54.tistory.com/496
환경구성 Docker Compose + RabbitMQ 노드 클러스터링 방법 https://adjh54.tistory.com/517
환경구성 Docker Compose + Apache Kafka, Kafka-UI 환경 구성 방법 https://adjh54.tistory.com/637
환경구성 Docker Compose + Jenkins 환경 구성 및 실행방법 https://adjh54.tistory.com/643
환경구성 Docker Compose + Keycloak 환경 구성 및 실행방법 https://adjh54.tistory.com/644
     
Redis 이해하기 Redis(Remote Dictionary Server) 이해하기 -1 : 구조 및 특징, 아키텍처 https://adjh54.tistory.com/447
Redis 이해하기 Redis(Remote Dictionary Server) 이해하기 -2 : MacOS 로컬 환경 구성 및 명령어 https://adjh54.tistory.com/448

 

 

1) Redis


💡 Redis(Remote Dictionary Server)

- NoSQL 데이터베이스 중 하나이며 오픈소스 소프트웨어입니다. 주요한 특징은 ‘키-값(Key-Value)’ 형태로 데이터를 저장하고 이 데이터를 ‘인-메모리 데이터 저장소’에 저장합니다.

- ‘키-값(Key-Value)’ 형태로 데이터를 저장을 하며 ‘다양한 종류의 값’을 지정 가능합니다. 값으로는 문자열, 리스트, 셋, 정렬된 셋, 해시 등을 지원합니다.
- '인 메모리 데이터 저장소’를 사용하기에 서버의 메인 메모리에 모든 데이터를 저장하므로, 디스크 I/O를 거치는 다른 데이터베이스 시스템보다 훨씬 빠른 성능을 보여줍니다.
- 메모리에 저장되는 데이터 베이스는 디스크에 저장하여 휘발성으로 사용되는 데이터를 영구적으로 저장하는 기능을 제공하여 서버가 다운되더라도 데이터를 복구할 수 있습니다.
- 주로 데이터베이스, 캐시, 메시지 브로커 등 다양한 용도로 사용될 수 있습니다.
 

Redis - The Real-time Data Platform

Developers love Redis. Unlock the full potential of the Redis database with Redis Enterprise and start building blazing fast apps.

redis.io

https://www.sunjesoft.co.kr/faq/__faq/in-memory-dbmswa-disk-dbms-yi-caijeomi-mueosingayo

 

[ 더 알아보기 ]

💡 NoSQL


- ‘Not Only SQL’ 또는 ‘Non-Relational SQL’이라는 의미를 가지며 관계형 데이터베이스 관리 시스템(RDBMS)이 아닌 다른 형태의 데이터 저장소를 의미하며 스키마가 없거나 유연한 스키마를 가지고 있어 데이터 구조가 고정되어 있지 않습니다.
- 이로 인해 다양한 형태의 데이터를 저장하고 관리할 수 있습니다.
- NoSQL은 대용량 분산 데이터 처리를 위해 개발되었으며 데이터의 구조적 유연성과 확장성을 제공합니다.

💡 Redis 서버를 내리고 다시 서버를 올리면 데이터가 모두 사라질까?

- Redis는 기본적으로 인-메모리 데이터 구조 저장소이기 때문에, 서버가 종료되면 메모리에 저장된 데이터는 사라집니다.
그러나 Redis는 디스크에 데이터를 저장하는 영구 저장 기능을 제공합니다.
- 이 기능을 사용하면, 서버가 종료되어도 데이터를 복구할 수 있습니다. 이 영구 저장 방식은 RDB (Redis DataBase)와 AOF (Append Only File) 두 가지 방법이 있습니다.

 

2) Docker Compose


💡Docker Compose

- 여러 컨테이너가 함께 실행되는 환경에서, 하나의 파일 내에 정의하여 여러 컨테이너를 관리하기 위한 도구를 의미합니다. 즉, 여러 컨테이너를 관리할 때, 단일 명령어를 통해 생성-관리-배포하는 기능을 수행하는 역할을 합니다.

- 기존의 Dockerfile을 통해 단일 컨테이너를 ‘생성-관리-배포’하는 과정에서의 처리과정은 간단하였으나 여러 컨테이너를 일괄 띄우는데 시간 소요가 많이 되기에 이를 사용합니다.
- 이러한 컨테이너 관리는 YAML 파일 형식을 사용하여 서비스, 네트워크 및 볼륨 같은 애플리케이션 서비스를 구성할 수 있습니다. 또한 개발, 테스트, 스테이징, 운영 및 CI 워크플로우 환경에서 애플리케이션을 이동하여 배포가 가능하기에 관리가 매우 편리합니다.

https://docs.docker.com/compose/

 

 

1. Docker Compose 처리 과정


 

💡 Docker Compose 처리 과정

1. Dockerfile에 필요한 모든 서비스를 정의합니다.(Define all your required services in a Dockerfile)
- Dockerfile 내에 각 다운로드 할 이미지와 실행할 컨테이너에 대해 정의합니다.

2. Compose 파일(YAML/YML) 내에 각 서비스 간의 관계를 정의합니다.(Define the releationship between each service in a Compose file)
- 이 파일에는 실행할 서비스(컨테이너)들과 그 설정들을 포함하고 있습니다. 사용할 파일 내용은 Docker 이미지, 포트 매핑, 볼륨 마운트, 네트워크 설정, 환경 변수 등이 정의됩니다.

3. Docker Compose를 사용하여 애플리케이션을 시작합니다.(Use Docker Compose to start the application)
- Docker Compose의 실행 명령어 ‘docker-compose up’ 명령어를 수행하여 일괄 서비스를 실행합니다.
- 이 명령어를 통해서 Docker Compose 파일에 정의된 모든 서비스를 시작합니다.
- 필요한 Docker 이미지가 로컬에 없으면 자동으로 다운로드하고, 컨테이너를 생성하고 시작합니다.

4. Docker Compose의 서비스 상태를 확인합니다.
- Docker Compose의 상태 확인 명령어 ‘docker-compose ps’ 명령어를 수행하여 서비스의 상태를 확인합니다. 현재 실행 중인 서비스의 상태를 확인할 수 있습니다.

+ 필요에 따라 Docker Compose의 서비스를 중지합니다.
- Docker Compose의 중지 명령어 ‘docker-compose stop’ 명령어를 수행하거나 ‘docker-compose down’ 명령어를 수행하여 모든 서비스를 중지하고 컨테이너, 네트워크, 볼륨을 삭제합니다.

 

3) RedisInsight


💡 RedisInsight

- Redis Labs에서 제공하는 GUI 도구로, Redis 데이터베이스를 쉽게 관리하고 모니터링할 수 있도록 도와줍니다.
특징 설명
다양한 데이터 타입 지원 Redis의 다양한 데이터 타입(문자열, 리스트, 해시 등)을 시각적으로 관리 가능
실시간 모니터링 Redis 서버의 성능과 상태를 실시간으로 확인 가능
쉬운 데이터 조작 데이터를 삽입, 삭제, 수정하는 작업을 간단히 수행 가능
시각화 Redis 데이터를 그래프와 차트로 시각화하여 분석 용이
멀티 플랫폼 지원 Windows, macOS, Linux와 같은 다양한 플랫폼에서 사용 가능

 

 

Redis Insight

DO MORE WITH YOUR DATA Visualize, optimize, and 
troubleshoot with Redis Insight Redis Insight is our free graphical interface for analyzing Redis data across all operating systems and Redis deployments with the help of our AI assistant, Redis Copilot. L

redis.io

 

4) Redis + RedisInsight 환경 구축


 

1. 기존 Redis Docker File 구성


💡 기존 Redis dockerfile 구성

- 기존의 dockerfile 형태로 구성한 방법은 아래와 같이 간단한 형태로 구성하였습니다.
- 해당 부분에서 Redis GUI 툴을 함께 컨테이너 배포가 안되기에 Docker Compose 형태로 함께 배포하는 방식을 이용합니다.
# Redis의 공식 Docker 이미지를 기반으로 합니다.
FROM redis:7.2.4-alpine3.19

# Redis의 기본 포트인 6379를 열어줍니다.
EXPOSE 6379

# Redis 서버를 실행합니다.
CMD ["redis-server"]

https://adjh54.tistory.com/449

 

 

2. Docker Compose 파일 구성 : Redis + RedisInsight


💡 Docker Compose : Redis + RedisInsight

- Docker Compose 설정 파일로 Redis 서비스와 redisinsight 서비스를 함께 동시에 컨테이너화하여 실행하도록 돕습니다.

1. redis

- image: Redis의 경량 이미지(redis:7.4.2-alpine)를 사용하였습니다.
- container_name: simple-redis라는 이름의 컨테이너 이름을 지정하였습니다.
- ports : 호스트의 6379 포트를 컨테이너의 6379 포트에 매핑하였습니다.
- networks: 지정된 네트워크에 연결되어 다른 서비스와 통신할 수 있습니다.
- volumes : Redis 데이터를 영구적으로 저장하기 위한 볼륨을 마운트 합니다

2. redisinsight
- image : RedisInsight의 최신 이미지(redis/redisinsight:latest)를 사용하였습니다.
- container_name: simple-redisinsight라는 이름의 컨테이너 이름을 지정하였습니다.
- ports : 호스트의 8001 포트를 컨테이너의 8001 포트에 매핑하였습니다.
- networks : Redis 서비스와 동일한 네트워크에 연결됩니다.
- volumes : RedisInsight의 설정과 데이터를 영구적으로 저장하기 위한 볼륨을 마운트 합니다

3. network
- driver : 브릿지 타입의 네트워크를 생성하여 두 서비스가 서로 통신할 수 있게 합니다.

4. volumes
- 컨테이너가 삭제되더라도 데이터가 유지되는 영구 볼륨을 정의합니다.
services:
  redis:
    image: redis:7.4.2-alpine
    container_name: simple-redis
    ports:
      - 6379:6379
    command: [ "redis-server" ]
    networks:
      - redis-network
    volumes:
      - redis_volume_data:/data

  redisinsight:
    image: redis/redisinsight:latest
    container_name: simple-redisinsight
    ports:
      - 5540:5540
    networks:
      - redis-network
    depends_on:
      - redis
    volumes:
      - redis_insight_volume_data:/db

networks:
  redis-network:
    driver: bridge

volumes:
  redis_volume_data:
  redis_insight_volume_data:

 

 

 

 

 

 

 

3. Docker Compose 실행 : Docker 이미지 생성 및 컨테이너 실행


💡 Docker Compose 실행 : Docker 이미지 생성 및 컨테이너 실행

- Docker 이미지 & 컨테이너를 실행하는 명령어를 통해 실행을 확인합니다.
# 프로젝트 접근
$ cd simple-docker-compose-redis-redisInsight

# docker 컨테이너 이미지 생성 & 컨테이너 실행
$ docker compose up -d

# docker compose 상태 확인
$ docker compose ps

 

 

4. 컨테이너 생성확인


 

 

 

5) RedisInsight 접속 및 구성


 

1. 로컬 5540 포트로 접속합니다.


 

2. Use recommended settings를 체크해서 ‘Submit’을 선택합니다.


 

 

3. ‘+ Add Redis database’를 선택합니다.


 

 

4. ‘Connection Settings‘를 선택합니다.


 

 

5. 로컬 연결 정보를 입력하고 ‘Add Redis Database’ 버튼을 선택합니다.


💡 로컬 연결 정보를 입력하고 ‘Add Redis Database’ 버튼을 선택합니다.
설정 항목 설명
Host redis localhost가 아닌 Docker 서비스 이름을 사용
Port 6379 Redis 기본 포트
Name 원하는 이름 연결에 사용할 식별 이름

 

 

6. 연결을 확인합니다.


 

 

 

7. ‘workbench’를 통해서 데이터 조회가 가능합니다.


 

 

6) 최종 결과 확인


 

1. 구성한 API로 단일 데이터를 적재했을 경우


 

2. RedisInsight 내에서 성공적으로 조회가 가능합니다.


 

 

 

 

 

오늘도 감사합니다. 😀

그리드형