I'm not sure I agree that this is an alpine bug.
This seems to be defined here: https://golang.org/src/net/conf.go#L203


        // If /etc/nsswitch.conf doesn't exist or doesn't specify any   // 
sources for "hosts", assume Go's DNS will work fine.         if 
os.IsNotExist(nss.err) || (nss.err == nil && len(srcs) == 0) {               if 
c.goos == "solaris" {                        // illumos defaults to "nis 
[NOTFOUND=return] files"                    return fallbackOrder            }   
            if c.goos == "linux" {                          // glibc says the 
default is "dns [!UNAVAIL=return] files"                      // 
http://www.gnu.org/software/libc/manual/html_node/Notes-on-NSS-Configuration-File.html.
                      return hostLookupDNSFiles               }               
return hostLookupFilesDNS


On Thursday, March 31, 2016 at 11:29:40 AM UTC-4, Peter Bourgon wrote:
>
> The problem is with Alpine, specifically musl's DNS behavior, and not 
> Go. See e.g. https://github.com/gliderlabs/docker-alpine/issues/8. I 
> believe the issue will be fixed in Alpine in the near future. 
>
> On Thu, Mar 31, 2016 at 5:26 PM, 'Dmitri Shelenin' via golang-nuts 
> <golan...@googlegroups.com <javascript:>> wrote: 
> > Hey, 
> > 
> > just hit the same thing for my service - DNS is used although the 
> hostname 
> > is in /etc/hosts files. Thanks for the pointers to the documentation - 
> that 
> > got me started on the research. 
> > I checked the sources for net/conf.go for the way it is decided which 
>  host 
> > lookup sequence to use. You're right that setting the netdns 
> configuration 
> > option changes the lookup order - it forces it to one of the values you 
> > specify (go or cgo). I did not find any explicit mention about default 
> > behaviour being that it is forced to use the go resolver - the default 
> > actually is to use dynamic strategy. 
> > Now, the interesting parts are in conf.hostLookupOrder (net/conf.go) 
> which 
> > determines the lookup strategy to use. It looks at several things 
> including 
> > /etc/nsswitch.conf (which can also define hostname resolution order). 
> > In case there's no /etc/nsswitch.conf, it will fallback to dns+files 
> order 
> > (note: for linux) which is probably what you're (it was the case for 
> me!) 
> > experiencing. 
> > So I guess the best bet is to (re-)configure the desired lookup order in 
> > /etc/nsswitch.conf 
> > 
> > regards, 
> > dmitri. 
> > 
> > 
> > On Saturday, January 2, 2016 at 4:09:50 AM UTC+1, ondr...@gmail.com 
> wrote: 
> >> 
> >> Hello, 
> >> 
> >> I'm running 2 Docker containers linked together: 
> >> 
> >> * application written in Go 
> >> * database (Postgres) 
> >> 
> >> If you are not familiar with Docker, link creates entry in /etc/hosts 
> with 
> >> IP of the other container (in this case database). So after linking 
> database 
> >> container, /etc/hosts in app container looks as follows: 
> >> 
> >> # cat /etc/hosts 
> >> 172.17.0.32 8c70febffc58 
> >> 127.0.0.1 localhost 
> >> ::1 localhost ip6-localhost ip6-loopback 
> >> fe00::0 ip6-localnet 
> >> ff00::0 ip6-mcastprefix 
> >> ff02::1 ip6-allnodes 
> >> ff02::2 ip6-allrouters 
> >> 172.17.0.31 db 23fa128ea263 vagrant_db_1 
> >> 
> >> I tried to connect to database using following code (using 
> >> github.com/lib/pq driver): 
> >> 
> >> database, _ = sql.Open("postgres", 
> >> "postgres://postgres@db:5432/test?sslmode=disable") 
> >> 
> >> err = database.Ping() 
> >> 
> >> if err != nil { 
> >> log.Println(err) 
> >> } 
> >> 
> >> It always seemed to ignore /etc/hosts, failing with "dial tcp: lookup 
> db 
> >> on 10.0.2.3:53: server misbehaving". I expect it bypassed my hosts 
> file and 
> >> tried to resolve it via DNS. I tried to debug it using 
> GODEBUG=netdns=... as 
> >> described in https://golang.org/pkg/net/#hdr-Name_Resolution and found 
> out 
> >> that connection was successfully established when I used 
> GODEBUG=netdns=go 
> >> or GODEBUG=netdns=cgo. I find that odd since the documentation mentions 
> that 
> >> "go" is used by default, but it behaved differently when I explicitly 
> set 
> >> it. 
> >> 
> >> I'm not sure if it's some problem with lib/pq, Golang or I'm 
> >> misunderstading something. Any ideas what could be happening? 
> >> 
> >> I'm using Go 1.5.2, running inside Alpine Linux Docker container, 
> running 
> >> inside virtual Ubuntu (Linux vagrant-ubuntu-trusty-64 3.13.0-48-generic 
> >> #80-Ubuntu SMP Thu Mar 12 11:16:15 UTC 2015 x86_64 x86_64 x86_64 
> GNU/Linux) 
> >> on OSX El Capitan. 
> > 
> > -- 
> > You received this message because you are subscribed to the Google 
> Groups 
> > "golang-nuts" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> an 
> > email to golang-nuts...@googlegroups.com <javascript:>. 
> > For more options, visit https://groups.google.com/d/optout. 
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to