Мое требование - создать базу данных и таблицы в 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?
Он является частью нескольких контейнеров, и для работы многих служб требуется база данных и несколько таблиц. То же самое и с Clickhouse.
Ну, вы говорите «как в mysql», но не показываете, как это делается в mysql. В clickhouse вы можете добавить слой, поместить в него sql скрипт и запустить его при запуске контейнера cat script.sql | clickhouse-client
Я проверил Clickhouse
и не думаю, что он предоставляет те же функции по умолчанию Файл докеров Clickhouse.
Вы можете настроить образ Clickhouse
, добавив свои собственные требования, например, исполняемые файлы. Итак, все, что вам нужно сделать, это использовать Clickhouse
в качестве базового изображения для вашего пользовательского изображения, а затем, возможно, написать сценарий bash, который может использоваться в качестве точки входа для вашего пользовательского изображения, и заставить его создавать базу данных / таблицы на основе переменной среды, которую вы предоставит, а затем заставит его запустить службу в конце.
Спасибо, я в курсе. Вопреки надежде, что в Clickhouse есть какая-то функция, которая делает создание БД таким же простым, как MySQL.
Это не MySQL как движок, который упростил эту задачу. Это функция, созданная в его образе докера, поэтому вы можете делать то же самое самостоятельно с изображением кликхауса, если это не указано официально, что, похоже, не так.
Вы можете использовать образ докера 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
Я не вижу, где вы создаете БД в этом списке.