создание контейнера докеров 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
Это будет создавать и использовать ваше собственное изображение