Root cause: DNS returns IPv6 (AAAA) records for registry.npmjs.org first. Alpine musl tries IPv6, which hangs because the cluster has no IPv6 routing. NODE_OPTIONS=--dns-result-order=ipv4first forces Node/npm to use IPv4 addresses.
Root cause: DNS returns IPv6 (AAAA) records for registry.npmjs.org first. Alpine musl tries IPv6, which hangs because the cluster has no IPv6 routing. NODE_OPTIONS=--dns-result-order=ipv4first forces Node/npm to use IPv4 addresses.