簡體   English   中英

使 Redis 數據在 Docker 容器中的 docker-compose down 和 up 之間保持活動狀態

[英]Keep Redis data alive between docker-compose down and up in Docker container

問題是關於在docker-compose updocker-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 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也會破壞卷。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM