docker使用单独的卷组合比例

docker使用单独的卷组合比例,docker,docker-compose,Docker,Docker Compose,我想使用scale,但我需要为每个节点使用不同的卷和端口映射 我该怎么做?理想情况下,我需要某种环境变量或运行脚本来为每个新实例分配卷和端口 推荐的方法是什么?我知道这可能不是一个完美的解决方案,但如果您不介意在节点之间共享数据的话。。它确实很管用。我使用这个进行本地测试,所以在我的情况下是安全的 Docker-compose.yml ... volumes: - /var/run/docker.sock:/var/run/docker.sock ... Dockerfile ... R

我想使用scale,但我需要为每个节点使用不同的卷和端口映射

我该怎么做?理想情况下,我需要某种环境变量或运行脚本来为每个新实例分配卷和端口


推荐的方法是什么?

我知道这可能不是一个完美的解决方案,但如果您不介意在节点之间共享数据的话。。它确实很管用。我使用这个进行本地测试,所以在我的情况下是安全的

Docker-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
...

我正在为我的下一篇文章研究一种可能的方法,将与您分享soongreat!请在这里发布你文章的链接!