Создание базы данных и таблиц в dockerized экземпляре Clickhouse из файла docker-compose

Мое требование - создать базу данных и таблицы в Clickhouse, когда я использую docker-compose. Если это mysql, я делаю это, как показано ниже:

mysql_1:
      image: mysql:5.7.16
      environment:
        MYSQL_DATABASE: "one"
        MYSQL_USER: "one_user"
        MYSQL_PASSWORD: "one_user_pass"
        MYSQL_ROOT_PASSWORD: "root"
        MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
      volumes:
       - ./data/one:/docker-entrypoint-initdb.d
      ports:
        - "3306:3306"

Есть ли способ добиться того же для экземпляра Clickhouse?

Я не вижу, где вы создаете БД в этом списке.

Imaskar 06.09.2018 15:04

Он является частью нескольких контейнеров, и для работы многих служб требуется база данных и несколько таблиц. То же самое и с Clickhouse.

smaikap 07.09.2018 07:29

Ну, вы говорите «как в mysql», но не показываете, как это делается в mysql. В clickhouse вы можете добавить слой, поместить в него sql скрипт и запустить его при запуске контейнера cat script.sql | clickhouse-client

Imaskar 07.09.2018 08:27
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
3
3
3 979
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Я проверил Clickhouse и не думаю, что он предоставляет те же функции по умолчанию Файл докеров Clickhouse.

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

Спасибо, я в курсе. Вопреки надежде, что в Clickhouse есть какая-то функция, которая делает создание БД таким же простым, как MySQL.

smaikap 06.09.2018 10:27

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

Mostafa Hussein 06.09.2018 10:34

Вы можете использовать образ докера nafigat0r / clickhouse-server: 18.12. В docker-compose.yml установите переменную среды DATABASE_NAME для создания (или использования) конкретной базы данных. При желании вы можете настроить DATABASE_PORT для конкретного использования порта TCP.

Текущая версия образа имеет некоторые ограничения для запросов SQL: по одному на файл. Файлы с несколькими запросами не поддерживаются.

Ответ принят как подходящий

Я нашел для этого не очень чистое решение. По сути, он монтирует каталог хоста в контейнер и запускает все операторы «создать таблицы» и «вставить», будет сохраняться до тех пор, пока мы не очистим смонтированную папку !!

clickhouse:
  image: yandex/clickhouse-server:18.10
  ports:
    - "8123:8123"
    - "9000:9000"
  volumes:
   - ./data/clickhouse/data:/var/lib/clickhouse

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