docker compose v2 for Redis
Docker Compose를 사용하여 Redis를 설치하고 디스크에 데이터를 저장하도록 설정하는 방법은 다음과 같습니다. 이 과정에서는 docker-compose.yml
파일을 작성하여 Redis 서비스를 정의하고, 데이터를 지속적으로 저장하기 위한 설정을 포함합니다.
Redis 설치 및 디스크 저장 설정
디렉토리 생성: Redis 설정 파일과 데이터를 저장할 디렉토리를 생성합니다.
mkdir -p ./redis/data mkdir -p ./redis/conf
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
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"
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을 사용해야 합니다
Redis 실행 확인: Redis 컨테이너가 정상적으로 실행 중인지 확인하려면 다음 명령어를 사용합니다.
docker ps
데이터 지속성 테스트:
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: 사용자가 명시적으로 중지하지 않는 한 항상 재시작합니다. 이는
always
와no
의 중간 형태로, Docker 자체가 중지되거나 재시작될 때도 컨테이너를 다시 시작합니다.
이러한 정책은 각 서비스의 요구 사항에 맞게 컨테이너의 동작을 제어하는 데 사용됩니다. restart: always
는 특히 중요한 서비스가 지속적으로 실행되어야 할 때 적합한 선택입니다.
'개발' 카테고리의 다른 글
Javascript & Node.js 패턴: IIFE의 이해와 활용 (0) | 2024.12.05 |
---|---|
React와 Node.js 개발자를 위한 파일 네이밍의 모든 것 (0) | 2024.12.05 |
Node.js 생태계의 모듈 시스템 진화 (0) | 2024.11.25 |
JavaScript Map vs Object: 성능과 사용법 (0) | 2024.11.23 |