在初始化时创建一个redis docker容器,其中包含一个现有的rdb和load模块?

pcww981p  于 2021-06-09  发布在  Redis
关注(0)|答案(1)|浏览(387)

我试图启动一个docker容器使用redis数据库,我有一个持久的副本保存到本地机器。我现在有一个docker容器,用这个 docker-compose.yml 但是它忽略了我的redis.conf(包含loadmodule命令)位于带有rdb文件的卷中

version: '3'
services:
  redis:
    image: redis
    container_name: "redis"
    ports:
      - "6379:6379"
    volumes:
      - E:\redis_backup_conf:/data

这将开始加载rdb,但由于数据使用此时间序列模块而崩溃。
我可以用一个新的redis db加载一个单独的docker容器,它使用下面的dockerfile加载了time seriese模块。我的问题是我不知道如何同时做到这两个!
有没有办法从docker-compose.yml调用dockerfile或在dockerfile中声明卷?或者我应该创建自己的图像,我可以在docker-compose.yml中调用它?任何帮助都会很感激的,我想我只是在兜圈子。 dockerfile ```

BUILD redisfab/redistimeseries:${VERSION}-${ARCH}-${OSNICK}

ARG REDIS_VER=6.0.1

stretch|bionic|buster

ARG OSNICK=buster

ARCH=x64|arm64v8|arm32v7

ARG ARCH=x64

----------------------------------------------------------------------------------------------

FROM redisfab/redis:${REDIS_VER}-${ARCH}-${OSNICK} AS builder

ARG REDIS_VER

ADD ./ /build
WORKDIR /build

RUN ./deps/readies/bin/getpy2
RUN ./system-setup.py
RUN make fetch
RUN make build

----------------------------------------------------------------------------------------------

FROM redisfab/redis:${REDIS_VER}-${ARCH}-${OSNICK}

ARG REDIS_VER

ENV LIBDIR /usr/lib/redis/modules
WORKDIR /data
RUN mkdir -p "$LIBDIR"

COPY --from=builder /build/bin/redistimeseries.so "$LIBDIR"

EXPOSE 6379
CMD ["redis-server", "--loadmodule", "/usr/lib/redis/modules/redistimeseries.so"]

编辑:
好 啊。。稍有改进,我可以在docker-compose.yml中调用redis timeseries映像

services:
redis:
image: redislabs/redistimeseries
container_name: "redis"
ports:
- "6379:6379"
volumes:
- E:\redis_backup_conf:/data

这是一个开始,但我仍然需要增加数据库的最大数量,我一直在使用redis.conf在过去这样做。
rryofs0p

rryofs0p1#

你可以直接让docker编写你的dockerfile。假设docker compose文件位于名为myproject的文件夹中。另外,假设dockerfile位于名为myredis的文件夹中,myredis位于myproject文件夹中。然后您可以替换docker compose文件中的此行:

Image: redis

使用:

Build: ./myredis

这将建立和使用您的自定义图像

相关问题