如何从docker-compose up -scale获取数字

时间:2018-01-30 22:33:59

标签: docker docker-compose elixir

我正在尝试创建运行Elixir节点的可扩展的docker容器。目前我有这个:

client:
  image: elixir:alpine
  command:
    elixir --name client@somewhere.localdomain --cookie pass 
           -S mix run --no-halt -e Connect.main ${CONTROLLER}
  depends_on:
    - system_control

elixir节点只是使用Node.connect来通知控制器它的存在。但是,如果我尝试使用docker-compose up --scale client=5创建更多客户端节点,那么只有第一个能够连接,其余的被拒绝(可能),因为硬编码--name导致了名称冲突。知道如何规避吗?有没有办法获得一些唯一的ID而不是somewhere

编辑:我的Connect.main elixir脚本(删节):

defmodule Connect do
  def main do
    [server] = System.argv
    IO.puts "#{Node.self} - Connecting to #{server} - #{ Node.connect(:'#{server}') }
  end
end

1 个答案:

答案 0 :(得分:0)

使用随机组件分配名称可以解决您的问题。确保它足够随机,重复是非常不可能的。您可能希望在某些情况下避免使用this Docker-Compose issue

中建议的顺序ID

正如@ fl9建议的那样,使用某种命令行UUID生成器(如uuidgen)可能能够解决问题。