La pregunta es sobre mantener vivos los datos de Redis entre docker-compose up y docker-compose down.
En el archivo docker-compose.yaml continuación, el servicio db usa - postgres_data:/var/lib/postgresql/data/ volumen para mantener los datos vivos. Me gustaría hacer algo como esto para el servicio redis , pero no puedo encontrar una solución viable para hacerlo. Solo una forma en que he logrado lograr este objetivo es almacenar datos en el almacenamiento local - ./storage/redis/data:/data. Todos los experimentos con volumen externo no dieron resultados.
La pregunta es: ¿es posible de alguna manera almacenar datos redis entre docker-compose down y docker-compose up en un volumen similar al del servicio DB ?
Lo siento si la pregunta es ingenua…
Gracias
version: '3.8' services: web: build: . command: python /code/manage.py runserver 0.0.0.0:8000 env_file: - ./series/.env volumes: - .:/code ports: - 8000:8000 depends_on: - db - redis db: build: context: . dockerfile: postgres.dockerfile restart: always env_file: - ./series/.env environment: - POSTGRES_DB=postgres - POSTGRES_USER=postgres - POSTGRES_PASSWORD=1q2w3e volumes: - postgres_data:/var/lib/postgresql/data/ ports: - target: 5432 published: 5433 protocol: tcp mode: host redis: image: redis:alpine command: redis-server --appendonly yes ports: - target: 6379 published: 6380 protocol: tcp mode: host volumes: - ./storage/redis/data:/data restart: always environment: - REDIS_REPLICATION_MODE=master volumes: postgres_data:Solo necesita agregar un volumen con nombre para los datos de Redis junto a postgres_data :
volumes: postgres_data: redis_data:Luego cambie la ruta del host al volumen nombrado:
redis: ... volumes: - redis_data:/dataSi Redis guardó los datos con la ruta del host, lo anterior funcionará para usted. Lo menciono porque debe configurar Redis para habilitar el almacenamiento persistente (consulte la página de Redis Docker Hub https://hub.docker.com/_/redis ).
Tenga cuidado, ejecutar docker-compose down -v también destruirá los volúmenes.