如何在 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
This link 解释了如何在 Docker.
上 运行 Apache Drilldocker 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