0

我正在尝试使用我将持久副本保存到本地计算机的 redis db 启动 docker 容器。我目前有一个 docker 容器使用它加载带有卷的 redis,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 数据库加载一个单独的 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 来执行此操作。

4

1 回答 1

1

您可以让 docker-compose 直接构建您的 dockerfile。假设您的 docker-compose 文件位于名为 myproject 的文件夹中。还假设您的 dockerfile 位于名为 myredis 的文件夹中,并且 myredis 位于 myproject 文件夹中。然后你可以在你的 docker-compose 文件中替换这一行:

Image: redis

和:

Build: ./myredis

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

于 2020-06-20T05:52:54.657 回答