使Redis数据在docker容器中的docker compose down和up之间保持活动



问题是关于在docker-compose updocker-compose down.之间保持Redis数据有效

在下面的docker-compose.yaml文件中,db服务使用-postgres_data:/var/lib/postgresql/data/卷来保持数据有效。我想为redis服务做这样的事情,但我找不到可行的解决方案。我实现这个目标的唯一方法是将数据存储在本地存储- ./storage/redis/data:/data.中。所有使用外部卷的实验都没有结果。

问题是,是否可以以某种方式将docker-compose downdocker-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:


您只需要在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也会破坏卷。

最新更新