2016-04-24 13 views
6

Ho un contenitore docker che ospita una web API scritta in Nancy. Qui è l'eccezione che si verifica dopo una richiesta Web viene effettuata quando il contenitore viene prima licenziato:Docker nancy - nessuna route per l'host

4/22/2016 2:40:50 PM at API.SearchModule+<SearchModule>c__AnonStorey0.<>m__0 (System.Object _) <0x41380aa0 + 0x00850> in <filename unknown>:0 
    4/22/2016 2:40:50 PM at (wrapper dynamic-method) System.Object:CallSite.Target (System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Func`2<object, object>,object) 
    4/22/2016 2:40:50 PM at Nancy.Routing.Route+<>c__DisplayClass4.<Wrap>b__3 (System.Object parameters, CancellationToken context) <0x4133d350 + 0x00166> in <filename unknown>:0 
    4/22/2016 2:40:50 PM2016-04-22 13:40:50,177 ERROR: System.Net.WebException: Error: ConnectFailure (No route to host) ---> System.Net.Sockets.SocketException: No route to host 
    4/22/2016 2:40:50 PM at System.Net.Sockets.Socket.Connect (System.Net.EndPoint remoteEP) <0x41374320 + 0x001b8> in <filename unknown>:0 
    4/22/2016 2:40:50 PM at System.Net.WebConnection.Connect (System.Net.HttpWebRequest request) <0x41372b50 + 0x00609> in <filename unknown>:0 

Le query app elasticsearch quando una richiesta web è fatto, inizialmente ho pensato che soffiava su perché non poteva trova elastico (un altro contenitore finestra mobile), tuttavia questo non sembra essere il caso in quanto localmente se smetto elastico l'API continuerà a servire le richieste anche se genererà eccezioni. Una volta che l'elastico è tornato online, l'API continua a servire le richieste questa volta senza eccezioni.

La cosa bizzarra è che se il contenitore finestra mobile viene riavviato nuovamente, le richieste Web contro l'API vengono eseguite correttamente con query elastiche.

Esiste comunque la possibilità di replicare localmente questo problema in modo da poter provare a risolvere un problema? Avevo pensato che se lo avessi eseguito localmente con elastico offline avrei ottenuto lo stesso errore, tuttavia non sembra essere il caso che mi fa pensare che sia una sorta di problema di connettività di rete.

Cosa ne pensate che potrebbe essere?

+0

Si sta utilizzando la funzione link docker per collegare il contenitore app ed elasticsearch? Se sì, come ti connetti a elastico via env vars o hostname? – jazgot

+0

Quale versione della finestra mobile stai usando? Su quale host? – VonC

+0

Invia il contenuto del file di composizione (se si utilizza uno) e i comandi che si stanno utilizzando per eseguire i contenitori. – johnharris85

risposta

1

Si tratta di un problema DNS. Il contenitore docker non è in grado di risolvere l'indirizzo IP per l'URL fornito (Host).

Dai un'occhiata all'opzione --dns (https://docs.docker.com/engine/reference/run/#network-settings) o modifica il file resolv.conf all'interno della finestra immagine/contenitore.

+0

Grazie, perché funziona quando viene riavviato se si tratta di un problema DNS? –