docker-compose scale – agent instance id

当我使用docker-compose scale我希望在yml文件中使用一个实例id。

泊坞窗,compose.yml:

 myservice: volumes: - ./volumes/foo{AGENT_ID}/bar:/foo/bar 

我已经看到了围绕这个话题的很多讨论,但是我还没有find明确的答案。

有一个环境variables或类似的,我可以用这种方式? 如果我可以在bash脚本中使用它,这将是理想的。

我知道,这可能不是一个完美的解决scheme,但如果你不介意共享节点之间的数据..它确实工作。 我正在使用这个进行本地testing,所以在我的情况下是安全的。

泊坞窗,compose.yml

 ... volumes: - /var/run/docker.sock:/var/run/docker.sock ... 

Dockerfile

 ... RUN pip3 install docker ... 

在每个节点中,我部署了以下脚本get_name.py

 from docker import Client import os hostname = os.environ['HOSTNAME'] cli = Client(base_url='unix://var/run/docker.sock') data = cli.containers() for d in data: id = d['Id'][:12] names = d['Names'] if id == hostname: print(names[0]) quit() print(hostname) 

当节点启动时( start.sh ),它查询它的名字并创build一个到相应子目录的符号链接:

 ... NODE_NAME=$(python /root/scripts/get_name.py) OWN_VOLUME_NAME="/shared_volumes${NODE_NAME}" ln -s ${OWN_VOLUME_NAME} /data ...