Docker-compose redis: начать с крепления? - PullRequest
1 голос
/ 08 июля 2019

Я использую docker-compose для создания контейнера redis. Однако мне нужно начать с некоторых значений по умолчанию. Возможно ли это?

Ответы [ 2 ]

2 голосов
/ 08 июля 2019

Существует несколько подходов, но имейте в виду, что по умолчанию службы запускаются в произвольном порядке с использованием Docker Compose и, даже если вы используете depends_on, это только проверяет, работают ли контейнеры (например, redis), а не что онизавершен процесс инициализации.

1.Самый простой: Предварительное создание

См. Опцию запуска образа redis с постоянным хранилищем:

https://hub.docker.com/_/redis/

Используя этот подход, вы либо смонтируетелокальный каталог в каталоге /data контейнера или создает том (данные) и использует его.Затем вы должны предварительно заполнить сервер redis, запустив против него redis-cli.

Один из способов сделать это - запланированный файл docker-compose.yml, но docker-compose --file=/path/to/docker-compost.yaml up redis, где redis - это имяслужбы Redis тоже.Вам необходимо убедиться, что служба redis доступна с хоста --ports: 6379:6379, возможно, чтобы внешний redis-cli мог получить к ней доступ.

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

2.Отказоустойчивость: тест на ключи

Docker Compose - насколько мне известно - не предлагает элегантного эквивалента инициатным контейнерам Kubernetes, которые запускаются до зависимого контейнера.

С помощью Docker Compose вы можете включить инициализацию (запустить один раз) redis-cli, чтобы заполнить сервер, но затем вы должны дополнить все клиенты, чтобы проверить, что это выполнено или наличие этих данных перед запуском (успешно).

Самым простым решением для этого является сбой клиентов Redis и restart: always, если ключи Redis отсутствуют.

Более продвинутым решением будет определение проверки работоспособности на наличиеключи redis, а затем depends_upon: ... condition: service_healthy (см. ссылка )

См. также порядок запуска в Docker Compose, описанный здесь

0 голосов
/ 08 июля 2019

Вам необходимо изменить файл DockerCompose. Вы также можете добавить файл, содержащий значение ключа, но вот самый простой пример добавления и получения ключа в файле DockerCompose.

version: '2'

services:
  redis:
    image: 'bitnami/redis:latest'
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
    ports:
      - '6379:6379'
    command:
      - /bin/sh
      - -c
      - |
          nohup redis-server &
          sleep 5
          echo "adding some default key value"
          redis-cli SET docker awesome
          echo "Get docker key value"
          redis-cli GET docker
          # this will keep container running
          tail -f /dev/null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...