создание контейнера redis docker с существующим rdb и загрузочным модулем при запуске? - PullRequest
0 голосов
/ 20 июня 2020

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

Я могу загрузить отдельный docker контейнер с fre sh redis db, в который загружен модуль time seriese, используя следующий файл докеров. Моя проблема в том, что я не могу понять, как делать и то, и другое одновременно!

Есть ли способ вызвать 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"]

EDIT:

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

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

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

1 Ответ

1 голос
/ 20 июня 2020

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

Image: redis

на:

Build: ./myredis

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

...