【发布时间】:2020-09-14 14:39:44
【问题描述】:
我目前正在使用 Docker Swarm 跨集群部署/管理多个 Dask Worker。为了更容易调试,我希望能够根据运行在 Swarm 中的节点来命名工作人员。
dask-worker 命令有一个--name 参数,但是,Docker 的模板在entrypoint 或cmd 选项中似乎不起作用。例如
...
worker:
image: myapp:latest
restart: always
entrypoint: ["dask-worker", "tcp://scheduler:8786", "--name", "{{.Node.Hostname}}"]
deploy:
mode: global
...
不幸的是,{{.Node.Hostname}} 模板似乎只能在 docker-compose.yml 文件的环境部分中使用。所以我的下一个选择是尝试通过这样的环境变量进行设置:
...
worker:
image: myapp:latest
restart: always
entrypoint: ["dask-worker", "tcp://scheduler:8786"]
environment:
DASK_DISTRIBUTED__WORKER__NAME: "{{.Node.Hostname}}"
deploy:
mode: global
...
我也没有成功,因为我假设无法通过环境变量设置工作人员名称 - 尽管我无法找到 dask 所有支持的环境变量配置名称的详尽文档,所以可以是一个错字或错误的猜测。
最后,我尝试通过 bash 模板将环境变量带回 entrypoint 命令。这也不起作用,因为在评估此命令时似乎未设置环境变量:
...
worker:
image: myapp:latest
restart: always
entrypoint: ["sh", "-c", "dask-worker tcp://scheduler:8786 --name $FOO"]
environment:
FOO: "{{.Node.Hostname}}"
deploy:
mode: global
...
我现在没有想法,想知道是否有人能想出办法。
谢谢。
【问题讨论】:
标签: docker docker-compose dask docker-swarm dask-distributed