Существует несколько проблем, похожих на эту, например:
Redis настроен для сохранения снимков RDB, но в настоящее время он не может сохраняться на диске - Ubuntu Server
MISCONF Redis настроен для сохранения снимков RDB, но в настоящее время не может сохраняться на диске. Команды, которые могут изменить набор данных, отключены
, но ни одна из них не решает мою проблему.
Проблема заключается в том, что я запускаю свой redis в docker -композиции и просто не могу понять, как это исправить при docker -композитном запуске.
redis docs говорит, что это исправление:
echo 1> / proc / sys / vm / overcommit_memory
И это работает, когда Redis установлен за пределами docker. Но как мне запустить эту команду с docker -compose?
Я попробовал следующее:
1) добавив команду:
services:
cache:
image: redis:5-alpine
command: ["echo", "1", ">", "/proc/sys/vm/overcommit_memory", "&&", "redis-server"]
ports:
- ${COMPOSE_CACHE_PORT:-6379}:6379
volumes:
- cache:/data
это не работа:
docker-compose up
Recreating constructor_cache_1 ... done
Attaching to constructor_cache_1
cache_1 | 1 > /proc/sys/vm/overcommit_memory && redis-server
constructor_cache_1 exited with code 0
2) Монтирование каталога /proc/sys/vm/
.
Не удалось: оказывается, я не могу подключиться к каталогу / proc /.
3) Переопределение точки входа :
пользовательская точка входа. sh:
#!/bin/sh
set -e
echo 1 > /proc/sys/vm/overcommit_memory
# first arg is `-f` or `--some-option`
# or first arg is `something.conf`
if [ "${1#-}" != "$1" ] || [ "${1%.conf}" != "$1" ]; then
set -- redis-server "$@"
fi
# allow the container to be started with `--user`
if [ "$1" = 'redis-server' -a "$(id -u)" = '0' ]; then
find . \! -user redis -exec chown redis '{}' +
exec su-exec redis "$0" "$@"
fi
exec "$@"
docker -compose.yml:
services:
cache:
image: redis:5-alpine
ports:
- ${COMPOSE_CACHE_PORT:-6379}:6379
volumes:
- cache:/data
- ./.cache/custom-entrypoint.sh:/usr/local/bin/custom-entrypoint.sh
entrypoint: /usr/local/bin/custom-entrypoint.sh
Это тоже не работает.
Как это исправить?