
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 dbfilename
comando pero esta vez faltaba el archivo crontab.
Todo funcionó después de eso :)
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}'