Правильно ли настраивать докер-контейнер специально для запуска сценариев переноса данных для БД в другом контейнере? - PullRequest
0 голосов
/ 14 сентября 2018

Это мой docker-compose.yml -

version: "3"

services:
  solr:
    build: ./services/solr
    ports:
      - "8983:8983"
    container_name: solr
    volumes:
      - ./services/solr/config/my_collection:/config/my_collection

  solr_data_loader:
    build: ./services/solr_data_loader
    container_name: solr_data_loader
    volumes:
      - ./services/solr_data_loader/data:/opt/data
    restart: always
    depends_on:
      - solr

Как видите, у меня есть служба с именем solr, которая использует официальное изображение solr из докер-хаба.Наряду с этим у меня есть еще одна служба с именем solr_data_loader, которая копирует данные из локальной системы в Solr с помощью сценария bash, выполнив команду cURL для пользовательского интерфейса solr с этой конечной точкой REST - http://solr:8983/solr/my_collection/update/csv?commit=true".

MyВопрос в том, является ли способ установки solr_data_loader хорошей практикой в ​​отношении того, как должны работать док-контейнеры?Конечно, я мог бы просто запустить отдельный сценарий bash для выполнения этой задачи по передаче данных, но мне кажется, что для меня это более чистый подход - иметь отдельный контейнер, который выходит из строя после выполнения этой работы.

1 Ответ

0 голосов
/ 14 сентября 2018

Я думаю, что это прекрасно.В некоторых сценариях сложно или просто невозможно выполнить команды оболочки (например, Kubernetes, Docker Swarm), поэтому запуск отдельного контейнера для задач конфигурации и миграции является обычной практикой.

Вы можете даже подумать о том, чтобы выполнитьэто без конечной точки HTTP, но начните миграцию при запуске контейнера и дайте контейнеру завершиться после завершения миграции в зависимости от инфраструктуры развертывания.

Еще один аспект - тестирование.Вы можете легко настроить docker-compose с вашей базой данных, контейнером миграции и проверить, работает ли контейнер так, как задумано.Конечно, это было бы возможно и со сценарием оболочки, но иметь только один тип артефакта развертывания (образ докера) тоже очень элегантно.

...