Conversation
docker-compose.test.yml and docker-compose.development.yml mount ./redis.conf, which relative to those files is docker/redis.conf — not in the repo. The file is docker/redis/redis.conf. Docker does not fail on a missing bind source: it creates an empty directory at the path and mounts that over /redis-stack.conf, so redis has been running on REDIS_ARGS alone, ignoring the config, and leaving a stray docker/redis.conf/ directory on every host that ran it. The sibling files in docker/redis/ get it right because they sit beside the config; the ones a directory up do not. docker-compose.provider.yml has the same bug and is left alone deliberately: fixing it changes how production redis behaves under memory pressure and should land on its own. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
No updates since Nothing is lost — Converting to draft disables auto-merge, so PRs with auto-merge enabled are excluded from this entirely. |
|
No updates since Nothing is lost — Converting to draft disables auto-merge, so PRs with auto-merge enabled are excluded from this entirely. |
|
No updates since Nothing is lost — Converting to draft disables auto-merge, so PRs with auto-merge enabled are excluded from this entirely. |
|
No updates since Nothing is lost — Converting to draft disables auto-merge, so PRs with auto-merge enabled are excluded from this entirely. |
|
No updates since Nothing is lost — Converting to draft disables auto-merge, so PRs with auto-merge enabled are excluded from this entirely. |
What changed
docker-compose.test.ymlanddocker-compose.development.ymlmount./redis/redis.confinstead of./redis.conf.What was wrong
Relative to those two files,
./redis.confresolves todocker/redis.conf— which isn't in the repo. The config lives atdocker/redis/redis.conf.Docker doesn't fail on a missing bind source. It creates an empty directory at that path and mounts it over
/redis-stack.conf, so redis has been starting onREDIS_ARGSalone and ignoring the config entirely — and leaving a straydocker/redis.conf/directory behind on every host that ran it.The two sibling compose files in
docker/redis/have the path right, because they sit next to the config. The ones a directory up don't.Found while isolating the test stack's ports in captcha-private: the file the compose said it needed wasn't there, on any machine.
What effect it has
Redis in test and development now picks up what the config was written to set:
That is a behaviour change, which is why it's worth reviewing rather than rubber-stamping: with no
maxmemory, redis grows unbounded and the defaultnoevictionpolicy makes writes fail once it's full; with the config, it caps at 2 GB and evicts least-recently-used keys.Deliberately not included
docker-compose.provider.yml:249has the identical broken path, so production redis is also running without the memory cap and eviction policy. I've left that file untouched here: it's the same one-line fix, but it changes how live providers behave under memory pressure and deserves to land on its own rather than riding along with a test change. Happy to raise it separately — worth deciding whether 2 GB andallkeys-lruare still the right numbers for a provider before switching them on.Test coverage
None added — this is a compose path. The suites that use these files exercise it: redis either starts with the config or it doesn't.
🤖 Generated with Claude Code