保持 Redis 数据在 Docker 容器中的 docker-compose down 和 up 之间保持活跃
Posted
技术标签:
【中文标题】保持 Redis 数据在 Docker 容器中的 docker-compose down 和 up 之间保持活跃【英文标题】:Keep Redis data alive between docker-compose down and up in Docker container 【发布时间】:2021-01-02 12:09:33 【问题描述】:问题是关于保持Redis
数据在docker-compose up
和docker-compose down.
之间保持活跃
在下面的docker-compose.yaml
文件中db
服务使用-postgres_data:/var/lib/postgresql/data/
卷来保持数据活动。
我想为redis
服务做这样的事情,但我找不到可行的解决方案。我设法实现这一目标的唯一一种方法是将数据存储在本地存储中- ./storage/redis/data:/data.
所有外部卷实验都没有结果。
问题是——是否有可能以某种方式将docker-compose down
和docker-compose up
之间的redis 数据存储在一个卷中,就像它在DB
服务中一样?
对不起,如果问题很幼稚......
谢谢
version: '3.8'
services:
web:
build: .
command: python /code/manage.py runserver 0.0.0.0:8000
env_file:
- ./series/.env
volumes:
- .:/code
ports:
- 8000:8000
depends_on:
- db
- redis
db:
build:
context: .
dockerfile: postgres.dockerfile
restart: always
env_file:
- ./series/.env
environment:
- POSTGRES_DB=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=1q2w3e
volumes:
- postgres_data:/var/lib/postgresql/data/
ports:
- target: 5432
published: 5433
protocol: tcp
mode: host
redis:
image: redis:alpine
command: redis-server --appendonly yes
ports:
- target: 6379
published: 6380
protocol: tcp
mode: host
volumes:
- ./storage/redis/data:/data
restart: always
environment:
- REDIS_REPLICATION_MODE=master
volumes:
postgres_data:
【问题讨论】:
【参考方案1】:您只需要在postgres_data
旁边为 Redis 数据添加一个命名卷:
volumes:
postgres_data:
redis_data:
然后将主机路径更改为命名卷:
redis:
...
volumes:
- redis_data:/data
如果 Redis 使用主机路径保存数据,那么上面的方法对你有用。我提到这一点是因为您必须配置 Redis 以启用持久存储(请参阅 Redis Docker Hub 页面https://hub.docker.com/_/redis)。
注意,运行 docker-compose down -v
也会破坏卷。
【讨论】:
感谢您的回答。无需配置任何东西。似乎默认情况下持久存储有效以上是关于保持 Redis 数据在 Docker 容器中的 docker-compose down 和 up 之间保持活跃的主要内容,如果未能解决你的问题,请参考以下文章