2017-09-08 138 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 
...