我想使用scale,但我需要为每个节点提供不同的卷和端口映射。
我该怎么做?理想情况下,我需要某种环境变量或运行的脚本来为每个新实例分配卷和端口。
建议的方法是什么?
答案 0 :(得分: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
)时,它会查询其名称并创建一个符号链接到相应的子目录:
...
NODE_NAME=$(python /root/scripts/get_name.py)
OWN_VOLUME_NAME="/shared_volumes${NODE_NAME}"
ln -s ${OWN_VOLUME_NAME} /data
...