我正在尝试用两个服务设置简单的redis配置:主服务和从服务。
这是我人生的一部分 .gitlab-ci.yml
主从式设置:
integration:
extends: .test
variables:
FF_NETWORK_PER_BUILD: "true"
services:
- name: redis:latest
alias: "redis-master"
command: [ "redis-server", "--port", "6379" ]
- name: redis:latest
alias: "redis-slave"
command: [ "redis-server", "--slaveof", "slave-master", "6379" ]
script:
- nc -z -v -w30 -n redis-master 6379 // fails to resolve hostname redis-master ...
// wait for readiness of both databases
// run tests
出于隐私考虑,它被简化了
由于我需要这些服务之间的通信,我知道我需要使用名为ff\ U network\ U per\ U build的功能标志,它:
为每个构建创建和使用新的用户定义docker brdge网络。
上述文件还指出
生成作业容器和服务容器都能够解析彼此的主机名(和别名)。
当谈到redis master和redis slave之间的连接时,一切都按预期工作,slave与master正确同步,但当我尝试使用脚本部分中的别名与它们连接时,会导致错误: Could not resolve hostname "redis-master": Name or service not known. QUITTING.
所以问题是为什么我不能在脚本部分使用别名?如果这是不可能的,我如何才能得到他们的IP,以便我可以ping他们,如果他们准备好连接?
旁注:
更有趣的是,当我不使用ff\u network\u per\u build标志别名时,它在脚本部分工作得很好(但同时redis slave不能与redis master通信,所以我不能ommit这个标志)。
1条答案
按热度按时间5us2dqdw1#
在您使用的nc命令中
-n
选项,即每个人,执行以下操作-n不要对任何指定的地址、主机名或端口执行任何dns或服务查找。
所以基本上你是在关闭你的dns搜索,这里有一个小测试来说明:
正在删除
-n
应该修好你的管道