https://github.com/bitcoin/bitcoin/blob/d72758c3f6c34cd835f5de3efc230964f3b1ea56/src/torcontrol.cpp#L539

If a user is running Tor proxy outside localhost (perhaps on other host inside LAN or in containerised environment) , the automatic creation of onion services ends up creating an onion service listening to hardcored 127.0.0.1 address on the Tor proxy's host instead of the private address of the bitcoind – effectively running an empty onion service listening the Tor proxy's localhost.
if (!addr.IsValid() || IsLocal(addr)) {
                break;
            }
            
            
            
            nTries++;
            if (nTries > 100)
                break;
            if (!IsReachable(addr))
                continue;
            
            if (nANow - addr.nLastTry < 600 && nTries < 30)
                continue;
            
            
            
            if (!fFeeler && !HasAllDesirableServiceFlags(addr.nServices)) {
                continue;
            } else if (fFeeler && !MayHaveUsefulAddressDB(addr.nServices)) {
                continue;
            }
            
            if (addr.GetPort() != Params().GetDefaultPort() && nTries < 50)
                continue;
            addrConnect = addr;
            break;
        }
        if (addrConnect.IsValid()) {