docker 同一network重启后无法解析应用名

docker 部署nginx 及应用,都在同一network中,(未指定ip)
nginx配置文件如下,money为 应用容器名

server {
    listen       80;# 配置端口
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html =404;
    }
    location  ^~/money/  {
               proxy_pass  http://money:6954/;
            }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

nginx可以正常转发,访问应用没问题..
问题:
当应用容器restart重启后,应用名未改变.应用容器ip改变.这时nginx无法正常转发了,同时nginx日志报无法找到ip(IP为应用容器的第一次启动IP)
(域名已手动隐藏)


2022/11/22 12:32:08 [error] 30#30: *32 connect() failed (113: No route to host) while connecting to upstream, client: 172.18.0.3, server: , request: "GET /money/draw HTTP/1.1", upstream: "http://172.18.0.11:6954//money/draw", host: "域名", referrer: "https://域名/"
2022/11/22 12:32:08 [error] 28#28: *31 open() "/etc/nginx/html/50x.html" failed (2: No such file or directory), client: 172.18.0.3, server: , request: "GET /money/menu HTTP/1.1", upstream: "http://172.18.0.11:6954/menu", host: "域名", referrer: "https://域名/"

各位,不应该正常解析应用名为ip吗?

内部都没有DNS相关的服务的话,你用域名很容易出问题啊,
还有,除非用网络解决方案指定IP,否则IP都会变的,所以如果是同一容器间的访问,就干脆直接 127.0.0.1或者localhost这里来
一旦涉及容器间的访问,关联,就需要网络解决方案,或者 容器编排。


例如在K8S,会有一个专门的DNS组件,比如coredns服务,就是用域名来提供个对外访问。