简体   繁体   English

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

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

Question is about keeping Redis data alive between docker-compose up and docker-compose down.问题是关于在docker-compose updocker-compose down.之间保持Redis数据docker-compose up活动状态docker-compose down.

In the docker-compose.yaml file bellow db service uses - postgres_data:/var/lib/postgresql/data/ volume to keep data alive.docker-compose.yaml文件中, db服务使用 - postgres_data:/var/lib/postgresql/data/ volume 来保持数据活动。 I would like to do something like this for redis service but I can not find workable solution to do so.我想为redis服务做这样的事情,但我找不到可行的解决方案。 Only one way I have managed to achieve this goal is to store data in local storage - ./storage/redis/data:/data.我设法实现这一目标的唯一方法是将数据存储在本地存储中- ./storage/redis/data:/data. All experiments with external volume gave no results.所有使用外部体积的实验都没有给出结果。

Question is -is it possible somehow to store redis data between docker-compose down and docker-compose up in a volume likewise it made in DB service?问题是 - 是否有可能以某种方式将 docker docker-compose downdocker-compose up之间的 redis 数据存储在一个卷中,就像它在DB服务中所做的那样?

Sorry if question is naive…对不起,如果问题很幼稚……

Thanks谢谢

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:




You just need to add a named volume for Redis data next to postgres_data :您只需要在postgres_data旁边为 Redis 数据添加一个命名卷:

volumes:
    postgres_data:
    redis_data:

Then change host path to named volume:然后将主机路径更改为命名卷:

  redis:
    ...
    volumes:
        - redis_data:/data

If Redis saved data with host path, then the above will work for you.如果Redis使用主机路径保存数据,那么上述方法对您有用。 I mention that because you have to configure Redis to enable persistent storage (see Redis Docker Hub page https://hub.docker.com/_/redis ).我提到这一点是因为您必须配置 Redis 以启用持久存储(请参阅 Redis Docker Hub 页面https://hub.docker.com/_/redis )。

Beware, running docker-compose down -v will destroy volumes as well.请注意,运行docker-compose down -v也会破坏卷。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM