
Olá, tenho o seguinte arquivo 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
Quando executo o docker-compose up, recebo um erro nos logs do 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
Tentei todas as soluções em plataformas diferentes, mas não consegui fazer o Redis funcionar. Uma pista ou direção para fazer funcionar será muito apreciada.
Também um breve resumo sobre o problema em detalhes por que isso acontece também seria de grande ajuda para os leitores e para mim. Esperando ansiosamente.
Responder1
Encontrei o mesmo problema ao executar um contêiner Redis no AWS ECS de maneira semelhante.
Conectei-me ao contêiner redis e executei:
redis-cli
> CONFIG GET dbfilename
Ele retornou o seguinte:
1) "dbfilename"
2) "crontab"
Tentei remover o arquivo crontab executando config set dbfilename "dbfilename"
o qual falhou com um erro.
Eu descobri que o redis estava rodandosemum arquivo de configuração. Então adicionei um volume extra para redis e criei o arquivo usando touch data/redis/config/redis.conf
.
Então mudei meu arquivo de composição de acordo:
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
Depois de reiniciar o contêiner, executei o mesmo CONFIG GET dbfilename
comando, mas desta vez o arquivo crontab estava faltando.
Tudo funcionou depois disso :)
Certifique-se também de definir uma senha para o seu servidor Redis, se ele estiver acessível pela 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}'