Imagem: redis:7-alpine
Pasta: /opt/server/infra/redis/
Container name: redis
Endereço interno: redis:6379
Para que serve
Redis é um store in-memory usado para cache, sessões, filas leves e pub/sub. Compartilhado entre projetos.
Variáveis
infra/redis/.env (gerada pelo bootstrap):
REDIS_PASSWORD=<gerado> # 48 hex chars
Como o password é aplicado
O compose passa a senha como argumento de inicialização:
command: ["redis-server", "--requirepass", "${REDIS_PASSWORD}", "--appendonly", "yes"]
--appendonly yes ativa o AOF (Append Only File): cada operação de escrita vai pro disco, garantindo persistência.
Volume
Contém o AOF e qualquer snapshot RDB que o Redis decida fazer.
Sem porta exposta
Apenas acesso via server_net. Para debugar do host:
docker compose exec -it redis redis-cli -a "$(grep REDIS_PASSWORD .env | cut -d= -f2)"
Subir
cd /opt/server/infra/redis
docker compose up -d
Padrão de uso pelos projetos
services:
app:
env_file: /opt/server/infra/redis/.env
environment:
REDIS_URL: redis://default:${REDIS_PASSWORD}@redis:6379
networks:
- server_net
Compartilhar o .env do Redis entre projetos significa que todos têm acesso a todas as keys. Para isolamento real, use prefixos por projeto (projetoA:cache:foo) ou DBs diferentes (redis://...:6379/0, /1, etc.).