![](/img/trans.png)
[英]Docker-compose - How to populate a container data to another container?
[英]Keep Redis data alive between docker-compose down and up in Docker container
問題是關於在docker-compose up
和docker-compose down.
之間保持Redis
數據docker-compose up
活動狀態docker-compose down.
在docker-compose.yaml
文件中, db
服務使用 - postgres_data:/var/lib/postgresql/data/
volume 來保持數據活動。 我想為redis
服務做這樣的事情,但我找不到可行的解決方案。 我設法實現這一目標的唯一方法是將數據存儲在本地存儲中- ./storage/redis/data:/data.
所有使用外部體積的實驗都沒有給出結果。
問題是 - 是否有可能以某種方式將 docker 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:
您只需要在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
也會破壞卷。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.