如何在 Docker Compose 中启动 Apache Drill

ps0*_*604 3 docker docker-compose apache-drill

此链接解释了如何在 Docker 上运行 Apache Drill。

docker run -i --name drill-1.18.0 -p 8047:8047 -t apache/drill:1.18.0 /bin/bash
Run Code Online (Sandbox Code Playgroud)

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

   version: "3.0"
   services:
      drill:
        image: apache/drill:latest
        ports:
          - "8047:8047"
        volumes:
          - vol_dask_data:/data
        entrypoint:
          - /bin/bash
Run Code Online (Sandbox Code Playgroud)

并像这样开始:

docker-compose up -d
Run Code Online (Sandbox Code Playgroud)

但是容器结束时没有执行任何操作,即使我启动 docker compose with -d.

如何在 Docker Compose 中启动 Drill?

Dav*_*aze 9

Drill Dockerfile结尾为:

ENTRYPOINT /opt/drill/bin/drill-embedded
Run Code Online (Sandbox Code Playgroud)

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

docker run该命令和 Compose 设置之间的另一个重要区别是-it选项。如果您docker run在没有任何命令的情况下尝试该命令,-i或者-t您将看到 Drill 提示,然后容器将立即退出。如果您添加回来-i,它将等待命令,并且在执行此操作时它将接受网络连接。与此等效的 Compose 是stdin_open: true命令。

这样docker-compose.yml我就可以在以下位置看到 Drill UI http://localhost:8047

ENTRYPOINT /opt/drill/bin/drill-embedded
Run Code Online (Sandbox Code Playgroud)