小编bry*_*unt的帖子

docker-swarm和docker-组成如何动态添加节点并让它们由服务解析

我一直在玩,docker-compose并从码头中心网站拼凑了一个项目.

我想到的一件事就是我如何扩展个别服务(通过添加更多实例)并让现有实例以某种方式了解这些新实例.

例如,规范docker-compose示例包括以下群集:

  • redis节点
  • python(flask)节点
  • haproxy负载均衡器

我创建了集群,一切正常,但我尝试将另一个节点添加到集群:

$ docker-compose scale web=2
Creating and starting 2 ... done


$ docker ps
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                                          NAMES
e83f6ed94546        packetops/web:latest   "/bin/sh -c 'python /"   6 minutes ago       Up About a minute   80/tcp                                         swarm-slave/1_web_2
40e01a615a2f        tutum/haproxy          "python /haproxy/main"   7 minutes ago       Up About a minute   443/tcp, 1936/tcp, 172.16.186.165:80->80/tcp   swarm-slave/1_lb_1
f16357a28ac4        packetops/web:latest   "/bin/sh -c 'python /"   7 minutes ago       Up About a minute   80/tcp                                         swarm-slave/1_lb_1/1_web_1,swarm-slave/1_lb_1/web,swarm-slave/1_lb_1/web_1,swarm-slave/1_web_1
8dd59686e7be        redis                  "/entrypoint.sh …
Run Code Online (Sandbox Code Playgroud)

docker etcd docker-compose docker-swarm

15
推荐指数
1
解决办法
1331
查看次数

Erlang:'try'中变量'Result'不安全

我正在使用Erlang R16B03.

这段代码:

list_dir(Directory, Retries) when is_integer(Retries), Retries > 0 ->
    Port = get_efile_port(),
    try erlang:port_info(Port) of
        Result ->
            error_logger:info_msg("list_dir - erlang:port_info(~p) ->  ~p ", [Port,Result])
    catch
        _:Reason ->
             error_logger:info_msg("list_dir - erlang:port_info(~p) -> {error, ~p }",[Port,Reason])
    end,
    case prim_file:list_dir(Port, Directory) of
        {error, einval} ->
            error_logger:info_msg(" list_dir -  port : ~p , directory : ~p", [Port, Directory]),
            clear_efile_port(),
            list_dir(Directory, Retries-1);
        Result ->
            Result
    end.
Run Code Online (Sandbox Code Playgroud)

生成以下编译器异常:

/basho/riak/deps/bitcask/src/bitcask_fileops.erl:855: variable 'Result' unsafe in 'try' (line 843)
ERROR: compile failed while processing /basho/riak/deps/bitcask: rebar_abort
make: …
Run Code Online (Sandbox Code Playgroud)

compiler-construction syntax erlang scope try-catch

7
推荐指数
2
解决办法
2158
查看次数

zsh在glob失败中存活

我检查了一个项目,该项目包含一个.gitignore文件.

这个文件的内容是这样的

vx1% head .gitignore 
./deps
/*.exe
/*.la
/.auto
.libs
ChangeLog
Makefile
Makefile.in
aclocal.m4
autom4te.cache
Run Code Online (Sandbox Code Playgroud)

我想要

  • 逐行读取文件
  • 对于每行读取,列出要忽略的实际文件
  • 最后我想调整脚本来删除那些文件

想要这样做的原因是我不相信项目Makefile来完全清理它生成的文件.

笔记

如您所见,.gitignore在运行命令之前使用了一些我需要修改的glob,否则glob将解析为我的根目录.

我所知道的

动态评估任意字符串作为glob模式

DYN = "*C"

打印$ ~DYN

剥离前导/,如果存在

DYN = "/*.C"

打印$ {~DYN /#//}

我得到了什么

cat .gitignore | 读我的时候; 回声$ i; print $ {~i /#//}; DONE

问题

这个循环遇到的第一个glob失败,它以错误终止

zsh: no matches found: *.exe

我想要的是

'脚本'应该继续遍历文件的每一行,依次尝试每一行.

我自己回答,回答如下

error-handling zsh glob gitignore

4
推荐指数
1
解决办法
785
查看次数