2017-09-08 96 views
1

当我使用docker-compose scale我想有在YML文件中使用的实例ID。搬运工,撰写规模 - 代理实例ID

泊坞窗,compose.yml:

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

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

是否有一个环境变量或类似的,我可以用这样的方式?这将是理想的,如果我可以使用,在bash脚本等

+0

目前我怀疑是否有一种方法,我正在研究文章,它显示了另一种可能的方式来做到这一点。将尽快发布 –

+0

嗨塔伦,谢谢。我发了另一个类似的问题。我很期待这篇文章,但不幸的是我需要更快的答案:)也许有人有一些想法.. – purpletentacle

+1

希望明天最大的 –

回答

0

我知道这可能不是一个完美的解决方案,但如果你不节点之间共享介意数据做它的工作好。我使用这个进行本地测试,所以对我来说这是安全的。

多克尔 - 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)它查询它的名字,并创建一个符号链接到对应的g子目录:

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