【问题标题】:docker-compose scale - agent instance iddocker-compose scale - 代理实例 ID
【发布时间】:2017-09-08 08:08:05
【问题描述】:

当我使用docker-compose scale 时,我希望在 yml 文件中使用实例 ID。

docker-compose.yml:

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

我已经看到很多关于这个话题的讨论,但我仍然没有找到一个明确的答案。

是否有可以以这种方式使用的环境变量或类似变量?如果我可以在 bash 脚本等中使用它,那将是理想的。

【问题讨论】:

  • 目前我怀疑有没有办法,我正在写一篇文章来展示另一种可能的方法来做到这一点。准备好后会尽快发布
  • 嗨塔伦,谢谢。我发布了另一个类似的问题。我绝对期待那篇文章,但不幸的是我需要尽快得到答案:) 也许有人有一些想法..
  • 希望明天达到最大值
  • 那太棒了!!发布后请发送链接!敬请期待
  • 嗨,Tarun,你的文章发表了吗?

标签: docker containers docker-compose


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-20
    • 2018-04-24
    • 2016-03-27
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多