Redis dentro de Docker Permiso de redacción denegado para el archivo RDB Crontab

Redis dentro de Docker Permiso de redacción denegado para el archivo RDB Crontab

Hola, tengo el siguiente archivo docker-compose.yaml.

version: "3.9"

volumes:
  local_postgres_data2: {}
  local_postgres_data_backups2: {}

services:
  postgres:
    image: postgres
    container_name: angel-postgres
    restart: always
    volumes:
      - local_postgres_data2:/var/lib/postgresql/data:Z
      - local_postgres_data_backups2:/backups:z
    environment:
      POSTGRES_DB: angel-agility
      POSTGRES_HOST: localhost
      POSTGRES_USER: angel-user
      POSTGRES_PASSWORD: angel123
    ports:
      - "5432:5432"

  redis:
    container_name: angel-redis
    image: redis:latest
    ports:
      - '6379:6379'
    restart: unless-stopped

Cuando ejecuto docker-compose up aparece un error en los registros de Redis:

2276:C 29 Mar 2022 20:32:52.005 # Failed opening the RDB file crontab (in server root dir /etc) for saving: Permission denied
1:M 29 Mar 2022 20:32:52.105 # Background saving error

Probé todas las soluciones en diferentes plataformas pero no pude hacer que Redis funcionara. Se agradecerá mucho una pista o dirección para que funcione.

También sería de gran ayuda para los lectores y para mí un breve resumen sobre el problema en detalle por qué sucede. Pensando en el futuro.

Respuesta1

Encontré el mismo problema al ejecutar un contenedor de Redis en AWS ECS de manera similar.

Me conecté al contenedor de Redis y ejecuté:

redis-cli
> CONFIG GET dbfilename

Devolvió lo siguiente:

1) "dbfilename"
2) "crontab"

Intenté eliminar el archivo crontab ejecutándolo config set dbfilename "dbfilename"y falló con un error.

Descubrí que redis se estaba ejecutandosinun archivo de configuración. Entonces agregué un volumen adicional para redis y creé el archivo usando touch data/redis/config/redis.conf.

Luego cambié mi archivo de redacción en consecuencia:

  redis:
    container_name: redis
    command: redis-server /conf/redis.conf
    image: redis:latest
    volumes:
       - "./data/redis/data:/data"
       - "./data/redis/config:/conf"
    ports:
      - '6379:6379'
    restart: unless-stopped

Después de reiniciar el contenedor, ejecuté el mismo CONFIG GET dbfilenamecomando pero esta vez faltaba el archivo crontab.

Todo funcionó después de eso :)

Configuración de Redis

También asegúrese de establecer una contraseña para su servidor Redis si se puede acceder a él desde Internet.

    docker run -d \
    -h redis \
    -e REDIS_PASSWORD=your-super-secure-password \
    -v redis-data:/data \
    -v redis-config:/conf \
    -p 6379:6379 \
    --name redis \
    --restart always \
    redis:latest /bin/sh -c 'redis-server /conf/redis.conf --appendonly yes --requirepass ${REDIS_PASSWORD}'

información relacionada