如何在 Docker Compose 中启动 Apache Drill

How to start Apache Drill in Docker Compose

This link 解释了如何在 Docker.

上 运行 Apache Drill
docker run -i --name drill-1.18.0 -p 8047:8047 -t apache/drill:1.18.0 /bin/bash

我需要在 Docker Compose 上 运行 它,所以我设置了它:

   version: "3.0"
   services:
      drill:
        image: apache/drill:latest
        ports:
          - "8047:8047"
        volumes:
          - vol_dask_data:/data
        entrypoint:
          - /bin/bash

然后像这样开始:

docker-compose up -d

但是容器没有做任何事情就结束了,即使我开始 docker compose with -d

如何在 Docker Compose 中开始钻取?

Drill Dockerfile 结尾为:

ENTRYPOINT /opt/drill/bin/drill-embedded

docker run命令中,这个特殊的结构完全忽略了图像名称后给出的命令。在您的 Compose 设置中,您将此(使用 entrypoint: 行)替换为 Bash shell,但此 shell 将立即退出。

docker run 命令和 Compose 设置之间的另一个重要区别是 -it 选项。如果你在没有 -i-t 的情况下尝试 docker run 命令,你将看到 Drill 提示,然后容器将立即退出。如果你加回 -i 那么它会等待一个命令,并且在它这样做的时候它会接受网络连接。与此等效的 Compose 是 stdin_open: true 命令。

有了这个 docker-compose.yml 我可以在 http://localhost:8047 上看到钻头 UI:

version: "3.8"        # a more current version
services:
  drill:
    image: apache/drill:latest
    ports:
      - "8047:8047"
    stdin_open: true  # add this line
                      # do not override entrypoint: or command:
                      # include volumes: if required