从docker compose文件在停靠的clickhouse示例中创建db和表

mctunoxg  于 2021-07-15  发布在  ClickHouse
关注(0)|答案(3)|浏览(687)

我的要求是使用docker compose在clickhouse中创建db和表。如果是mysql,我会做如下操作:

  1. mysql_1:
  2. image: mysql:5.7.16
  3. environment:
  4. MYSQL_DATABASE: "one"
  5. MYSQL_USER: "one_user"
  6. MYSQL_PASSWORD: "one_user_pass"
  7. MYSQL_ROOT_PASSWORD: "root"
  8. MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
  9. volumes:
  10. - ./data/one:/docker-entrypoint-initdb.d
  11. ports:
  12. - "3306:3306"

对于clickhouse示例,有什么方法可以实现同样的效果吗?

uwopmtnx

uwopmtnx1#

我找到了一个不太干净的解决办法。它基本上是将一个主机目录装入容器,并运行所有的“create tables”和“insert”语句,只要我们不清理装入的文件夹,这些语句就会被持久化!!

  1. clickhouse:
  2. image: yandex/clickhouse-server:18.10
  3. ports:
  4. - "8123:8123"
  5. - "9000:9000"
  6. volumes:
  7. - ./data/clickhouse/data:/var/lib/clickhouse
slwdgvem

slwdgvem2#

我查过了 Clickhouse 我不认为它提供了默认的clickhouse dockerfile相同的功能。
您可以自定义 Clickhouse 通过添加您自己的需求(如执行文件)来镜像。所以你要做的就是 Clickhouse 作为自定义映像的基础映像,可以编写一个bash脚本,用作自定义映像的入口点,并使其基于您将提供的环境变量创建数据库/表,然后使其在最后启动服务。

b4wnujal

b4wnujal3#

您可以使用nafigat0r/clickhouse-server:18.12 docker 形象。在 docker-compose.yml 设置环境变量 DATABASE_NAME 用于创建(或使用)特定数据库。也可以设置 DATABASE_PORT 用于特定的tcp端口使用。
当前图像版本对sql查询有一些限制:每个文件一个。不支持包含多个查询的文件。

相关问题