问一个 docker 容器名(docker-compose 服务名)解析到 IP 的问题,该怎么处理

2020-07-17 15:28:43 +08:00
 qwerthhusn

docker-compose启动两个服务:

其他服务指定了这两个服务,比如 nginx 的 upstream

upstream sa {
  server sa:12345;
  keepalive 1024;
}

然后,停掉这两个服务docker-compose stop sa sb,然后先启动 sb,这时候 sb 会拿到地址10.0.0.12,再启动 sa,这时候 sa 会拿到地址10.0.0.13,跟之前翻了个个。

此时问题就出现了,Nginx 缓存了 host 与 IP 的关系,导致反向代理到了"错误"的地址

除了 nginx 之外,不知道其他的各式各样的软件会不会也会有类似的问题,就是配置的不是 IP 地址而是容器的 host 名字,依赖的容器 IP 发生了变化,一般这种问题该咋处理?????

1704 次点击
所在节点    Docker
4 条回复
yiplee
2020-07-20 13:16:57 +08:00
julyclyde
2020-07-20 17:23:23 +08:00
nginx 可以 proxy_pass 到一个变量,这样会导致一个 delayed evaluate 行为,就能反映出来 DNS 的变化了
其他软件不了解
qwerthhusn
2020-07-20 17:38:12 +08:00
@julyclyde 那这种情况应该咋处理呢?我试了下 resolver valid 时效,发现没有作用
qq296015668
2020-12-06 15:04:15 +08:00
1. 你可以对容器设置固定 IP
2. 使用 depends_on 管理启动顺序

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/690909

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX