在启动时使用现有的 rdb 和加载模块创建 redis docker 容器?
creating a redis docker container with an exising rdb and load module at initiation?
我正在尝试使用 redis 数据库启动一个 docker 容器,我将持久副本保存到本地计算机。
我目前有一个 docker 容器使用此 docker-compose.yml
加载带有卷的 redis 但它错过了我的 redis.conf (其中包含 loadmodule 命令)位于带有 rdb 文件的卷中
version: '3'
services:
redis:
image: redis
container_name: "redis"
ports:
- "6379:6379"
volumes:
- E:\redis_backup_conf:/data
这开始加载 RDB,但由于数据使用此 time series 模块而崩溃。
我可以加载一个单独的 docker 容器,其中包含使用以下 docker 文件加载的时间序列模块的新 redis 数据库。我的问题是我不知道如何同时执行这两项操作!
有没有办法从 docker-compose.yml 调用 docker 文件或在 docker 文件中声明卷?
那,还是我应该创建我自己的图像,我可以在 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 来做到这一点。
您可以让 docker-compose 直接构建您的 docker 文件。假设您的 docker-compose 文件位于名为 myproject 的文件夹中。还假设您的 docker 文件位于名为 myredis 的文件夹中,并且 myredis 位于 myproject 文件夹中。然后你可以在你的 docker-compose 文件中替换这一行:
Image: redis
与:
Build: ./myredis
这将构建并使用您的自定义图像
我正在尝试使用 redis 数据库启动一个 docker 容器,我将持久副本保存到本地计算机。
我目前有一个 docker 容器使用此 docker-compose.yml
加载带有卷的 redis 但它错过了我的 redis.conf (其中包含 loadmodule 命令)位于带有 rdb 文件的卷中
version: '3'
services:
redis:
image: redis
container_name: "redis"
ports:
- "6379:6379"
volumes:
- E:\redis_backup_conf:/data
这开始加载 RDB,但由于数据使用此 time series 模块而崩溃。
我可以加载一个单独的 docker 容器,其中包含使用以下 docker 文件加载的时间序列模块的新 redis 数据库。我的问题是我不知道如何同时执行这两项操作!
有没有办法从 docker-compose.yml 调用 docker 文件或在 docker 文件中声明卷? 那,还是我应该创建我自己的图像,我可以在 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 来做到这一点。
您可以让 docker-compose 直接构建您的 docker 文件。假设您的 docker-compose 文件位于名为 myproject 的文件夹中。还假设您的 docker 文件位于名为 myredis 的文件夹中,并且 myredis 位于 myproject 文件夹中。然后你可以在你的 docker-compose 文件中替换这一行:
Image: redis
与:
Build: ./myredis
这将构建并使用您的自定义图像