在docker撰写访问redis数据库撰写

时间:2018-03-18 13:46:17

标签: docker redis docker-compose

我有一个Django应用程序,我想转移到docker。 redis dump.rdb文件位于项目的根目录中,包含应用程序运行所需的数据。我通常通过在同一目录中运行redis-server来启动它。如何将此配置移动到docker?我知道我可以使用卷并怀疑我需要将我的代码文件夹作为一个安装,但这会导致其他问题吗?这是我目前的码头设置:

Dockerfile

FROM python:2.7.14
 ENV PYTHONUNBUFFERED 1
 RUN mkdir /code
 WORKDIR /code
 ADD . /code/
 ADD requirements /requirements
 RUN pip install -r /requirements/local.txt

搬运工-compose.yml

version: '3'
services:
  db:
    image: postgres:9.6.3
    expose:
      - "5432"
    volumes:
       - pgdata:/var/lib/postgresql/data
  redis:
    image: redis:3.2.6
    expose:
      - "6379"
    volumes:
       - ./code
  redis_cache:
    image: redis:3.2.6
    expose:
      - "6379"
  elasticsearch:
    image: elasticsearch:5.6.6
    expose:
      - "9200"
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    ports:
      - "8000:8000"
    environment:
    - DATABASE_URL=postgresql://postgres@db/postgres
    - ENVIRONMENT=development
    - REDIS_URL=redis://redis:6379
    - REDIS_CACHE_URL=redis://redis_cache:6379
    - ELASTIC_ENDPOINT=elasticsearch:9200
    env_file: docker.env
    depends_on:
      - db
      - redis
      - elasticsearch
    volumes:
      - .:/code
volumes:
  pgdata: {}

1 个答案:

答案 0 :(得分:1)

有几种方法。您需要更喜欢什么取决于您的项目以及dump.rds文件中存储的信息类型。

  1. 您可以在里面创建包含redis文件的自定义dump.rds图片。然后,您需要将其推送到您的存储库。
  2. 如上所述,您可以从源代码安装卷。但我更喜欢mount而不是整个code目录,而只挂载redis目录,该目录存储了用于Redis的数据。
  3. 此外,您可以在web容器中创建一些迁移脚本。它可能会在redis容器和db容器中创建一些数据。