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

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

我的要求是使用docker compose在clickhouse中创建db和表。如果是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示例,有什么方法可以实现同样的效果吗?

uwopmtnx

uwopmtnx1#

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

clickhouse:
  image: yandex/clickhouse-server:18.10
  ports:
    - "8123:8123"
    - "9000:9000"
  volumes:
   - ./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查询有一些限制:每个文件一个。不支持包含多个查询的文件。

相关问题