Что я хочу сделать, это использовать dump.rdb, который я взял с производственного сервера, и использовать его в моей среде разработки, которая определяется очень простым составом файл.Восстановление redis на docker из dump.rdb
Для простоты предположим, что мое приложение такое же, как это compose example from the docker docs для Redis и колбы, так докер-compose.yml выглядит следующим образом:
version: '2'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
depends_on:
- redis
redis:
image: redis
Это сохраняется Redis данные между перезагрузками, но вы просто не можете обращайтесь к файлам redis, поскольку в файле docker-compose.yml нет тома, установленного для redis. Итак, я изменяю свой файл компоновки для монтирования тома для redis, и я также хочу заставить redis сохранять данные, а official redis image docs сказать, что это происходит, если я использую «appendonly».
redis:
image: redis
command: redis-server --appendonly yes
volumes:
- ./redis:/data
Если я делаю это, мои данные сохраняются, так как они находились в исходном примере, и теперь я могу видеть dump.rdb и и appendonly.aof в пути/Redis. Проблема в том, что если я хочу восстановить из dump.rdb, мне нужно отключить appendonly (например, см. Раздел «Как сделать резервную копию и восстановление вашего-redis-data-on-ubuntu-14»). -04), и без append-only я не вижу, как получить файл компоновки для записи в том.
Как я могу создать докеры, которые будут сохраняться в томе, где я могу переключить файлы dump.rdb, и, следовательно, вставить производственный снимок в мою среду разработки?
Update Следующие Compose работает, но будьте терпеливы при тестировании, как создание dump.rdb не мгновенный (следовательно, он, казалось, что это не удалось). Кроме того, Redis официальный документ изображения, означает, что вы должны использовать appendonly, когда вы не:
redis:
image: redis
volumes:
- ./redis:/data
Thanks @Chris - сравнивая составляющие файлы, одно отличие заключается в том, что вы создаете собственное изображение redis 'build redis' (c.f.' image redis'), поэтому я подумал, что это может быть так. Я попытался использовать ваш redis Dockerfile, чтобы убедиться, что это так, и я все еще не получал ожидаемого результата. Поэтому я вернулся к стандартным изображениям, удалив «команду» и имея там том. Кажется, что это исправляет некоторое время - иногда мне приходится перезапускать контейнер. Проблема в том, что создание файла 'dump.rdb' не запускалось, но закрытие контейнера вызывает его. –