0
我想使用scale,但是我需要爲每個節點使用不同的卷和端口映射。docker-compose scale with separate volumes
我該怎麼做?理想情況下,我需要某種環境變量或運行腳本來爲每個新實例分配一個卷和端口。
這樣做的建議方法是什麼?
我想使用scale,但是我需要爲每個節點使用不同的卷和端口映射。docker-compose scale with separate volumes
我該怎麼做?理想情況下,我需要某種環境變量或運行腳本來爲每個新實例分配一個卷和端口。
這樣做的建議方法是什麼?
我知道這可能不是一個完美的解決方案,但如果你不介意在節點之間共享數據,它確實很好。我使用這個進行本地測試,所以對我來說這是安全的。
多克爾 - 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
)它查詢它的名字,並創建一個符號鏈接到對應的摹子目錄:
...
NODE_NAME=$(python /root/scripts/get_name.py)
OWN_VOLUME_NAME="/shared_volumes${NODE_NAME}"
ln -s ${OWN_VOLUME_NAME} /data
...
我爲我的下一篇文章一種可能的方法工作,將與您分享不久偉大 –
!請在這裏發佈您的文章的鏈接! – purpletentacle