> Hello World !!!

     

@syaku

docker compose v2 for Redis

728x90
반응형

Docker Compose를 사용하여 Redis를 설치하고 디스크에 데이터를 저장하도록 설정하는 방법은 다음과 같습니다. 이 과정에서는 docker-compose.yml 파일을 작성하여 Redis 서비스를 정의하고, 데이터를 지속적으로 저장하기 위한 설정을 포함합니다.

Redis 설치 및 디스크 저장 설정

  1. 디렉토리 생성: Redis 설정 파일과 데이터를 저장할 디렉토리를 생성합니다.

    mkdir -p ./redis/data
    mkdir -p ./redis/conf
  2. Redis 설정 파일 생성: ./redis/conf 디렉토리에 redis.conf 파일을 생성하고, 다음 내용을 추가하여 RDB와 AOF를 통한 데이터 지속성을 설정합니다.

    # redis.conf
    
    # RDB 지속성 설정
    save 900 1        # 900초 동안 1개 이상의 키가 변경되면 저장
    save 300 10       # 300초 동안 10개 이상의 키가 변경되면 저장
    save 60 10000     # 60초 동안 10000개 이상의 키가 변경되면 저장
    rdbcompression yes
    
    # AOF 지속성 설정
    appendonly yes    # AOF 활성화
    appendfilename "appendonly.aof"
    appendfsync everysec
  3. Docker Compose 파일 작성: 프로젝트의 루트 디렉토리에 docker-compose.yml 파일을 작성합니다.

    services:
      redis:
        image: redis:alpine
        container_name: redis_server
        ports:
          - "6379:6379"
        volumes:
          - ./redis/data:/data
          - ./redis/conf/redis.conf:/usr/local/etc/redis/redis.conf
        command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
        restart: always
        labels:
          - "name=redis"
          - "mode=standalone"
  4. Docker Compose 실행: docker-compose.yml 파일이 있는 디렉토리에서 다음 명령어를 실행하여 Redis를 시작합니다.

    docker compose up -d

Docker Compose V1에서 V2로의 전환과 관련이 있을 수 있습니다. Docker Compose V2는 이제 독립 실행형이 아닌 Docker CLI의 플러그인으로 통합되어 있으며, 이로 인해 명령어 사용 방식이 변경되었습니다.

Docker Compose V2에서는 하이픈(-)을 사용하지 않고, 공백을 사용하여 명령어를 실행합니다. 따라서 docker-compose up 대신 docker compose up을 사용해야 합니다

  1. Redis 실행 확인: Redis 컨테이너가 정상적으로 실행 중인지 확인하려면 다음 명령어를 사용합니다.

    docker ps
  2. 데이터 지속성 테스트: redis-cli를 사용하여 Redis 서버에 연결하고 몇 가지 데이터를 입력한 후, 컨테이너를 재시작하여 데이터가 유지되는지 확인할 수 있습니다.

설명

이 설정은 Redis 인스턴스가 재시작되거나 장애가 발생하더라도 데이터를 복구할 수 있도록 보장합니다.

  • 볼륨: Docker Compose 파일의 volumes 섹션은 로컬 디렉토리를 컨테이너에 마운트하여 데이터(./redis/data)와 설정 파일(./redis/conf/redis.conf)을 지속적으로 유지할 수 있도록 합니다.
  • 지속성 설정: redis.conf 파일은 RDB와 AOF 옵션을 활성화하여 데이터가 주기적으로 저장되고, 모든 변경 사항이 로그로 기록되도록 합니다.
  • 포트: 기본 Redis 포트인 6379가 외부에 노출되어 외부에서 접근할 수 있도록 설정됩니다.

version

Docker Compose 파일에서 version 속성은 이제 더 이상 필요하지 않습니다. Docker Compose는 최신 Compose 사양을 기본적으로 사용하기 때문에, docker-compose.yml 파일에 버전을 명시할 필요가 없어졌습니다. 이로 인해 version 속성을 포함하면 경고 메시지가 나타날 수 있습니다.

이유

  • 과거의 필요성: 이전에는 Compose 파일의 스키마 버전을 지정하기 위해 version 속성이 필요했습니다. 이는 이전 버전과의 호환성을 위해 유용했지만, 이제는 Compose가 최신 사양을 자동으로 적용하므로 불필요하게 되었습니다.
  • 경고 메시지: version 속성을 포함한 Compose 파일을 실행할 때, "이 속성은 더 이상 사용되지 않으니 제거하라"는 경고 메시지가 나타날 수 있습니다. 이는 오류가 아닌 경고로, 파일의 기능에는 영향을 미치지 않습니다.

현재 권장 사항

  • version 속성 제거: Compose 파일에서 version 속성을 제거하는 것이 좋습니다. 이는 파일의 단순성을 높이고 최신 기능을 활용하는 데 도움이 됩니다.
  • Compose 최신 사양 사용: 최신 Compose 사양을 활용하여 서비스, 네트워크, 볼륨 등을 정의하는 데 집중하세요.

따라서, Docker Compose를 사용할 때는 version 속성을 생략하고 최신 사양에 맞춰 서비스를 정의하는 것이 현대적인 방식입니다.

redis version

redis:alpine 이미지는 일반적으로 Alpine Linux 위에서 실행되는 Redis를 의미합니다. 이 이미지의 Redis 버전은 7.2.5입니다. 이 버전은 최신의 안정적인 Redis 기능을 제공하며, Alpine Linux의 경량성을 활용하여 최소한의 리소스로 Redis를 실행할 수 있습니다.

restart

Docker Compose에서 restart: always는 컨테이너가 중지되었을 때 항상 재시작하도록 설정하는 정책입니다. Docker Compose의 재시작 정책에는 다음과 같은 종류가 있습니다:

  • no: 컨테이너가 중지되거나 오류가 발생해도 자동으로 재시작하지 않습니다. 기본값입니다.
  • always: 컨테이너가 중지되면 항상 재시작합니다. 이는 서비스가 항상 실행되어야 하는 경우에 유용합니다.
  • on-failure: 컨테이너가 비정상 종료(비제로 종료 코드)될 때만 재시작합니다. 오류 해결을 위해 유용할 수 있습니다.
  • unless-stopped: 사용자가 명시적으로 중지하지 않는 한 항상 재시작합니다. 이는 alwaysno의 중간 형태로, Docker 자체가 중지되거나 재시작될 때도 컨테이너를 다시 시작합니다.

이러한 정책은 각 서비스의 요구 사항에 맞게 컨테이너의 동작을 제어하는 데 사용됩니다. restart: always는 특히 중요한 서비스가 지속적으로 실행되어야 할 때 적합한 선택입니다.

728x90
반응형