создание контейнера докеров redis с существующим rdb и загрузочным модулем при запуске?

Я пытаюсь запустить контейнер докеров, используя базу данных redis, у меня есть постоянная копия, сохраненная на локальном компьютере. В настоящее время у меня есть докер-контейнер, загружающий 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, в которую загружен модуль временной серии, используя следующий файл докеров. Моя проблема в том, что я не могу понять, как делать и то, и другое одновременно!

Есть ли способ вызвать dockerfile из docker-compose.yml или объявить том в 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"]

РЕДАКТИРОВАТЬ:

хорошо.. небольшое улучшение, я могу вызвать образ redis-timeseries в docker-compose.yml

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

Это начало, но мне все еще нужно увеличить максимальное количество баз данных, в прошлом я использовал redis.conf для этого.

1 ответ

Решение

Вы можете просто заставить docker-compose напрямую построить свой файл докера. Предположим, ваш файл docker-compose находится в папке myproject . Также предположим, что ваш файл докеров находится в папке с именем myredis, а myredis находится в папке myproject . Затем вы можете заменить эту строку в своем файле docker-compose:

Image: redis

С участием:

Build: ./myredis

Это будет создавать и использовать ваше собственное изображение

Другие вопросы по тегам