2016-05-11 15 views
5

Ho un'applicazione Web front-end ospitata in Docker. Il backend esiste già ma ha un indirizzo "IP personalizzato", quindi ho dovuto aggiornare il mio file locale/etc/hosts per accedervi. Quindi, dal mio computer locale sono in grado di accedere all'API back-end senza problemi.L'esecuzione della finestra mobile risulta nell'errore "host non trovato nell'upstream"

Ma il problema è che Docker in qualche modo non può risolvere questo "IP personalizzato", anche quando l'host è scritto nel file contenitore (immagine?)/Etc/hosts.

Quando il contenitore Docker avvia vedo questo errore

$ docker run media-saturn:dev 
2016/05/11 07:26:46 [emerg] 1#1: host not found in upstream "my-server-address.com" in /etc/nginx/sites/ms.dev.my-company.com:36 
nginx: [emerg] host not found in upstream "my-server-address.com" in /etc/nginx/sites/ms.dev.my-company.com:36 

aggiorna il file/etc/hosts tramite comando nella Dockerfile, come questo

# install wget 
RUN apt-get update \ 
    && apt-get install -y wget \ 
    && rm -rf /var/lib/apt/lists/* 

# The trick is to add the hostname on the same line as you use it, otherwise the hosts file will get reset, since every RUN command starts a new intermediate container 
# it has to be https otherwise authentification is required 
RUN echo "123.45.123.45 my-server-address.com" >> /etc/hosts && wget https://my-server-address.com 

Quando ho ssh nella macchina per controlla il contenuto attuale di/etc/hosts, la riga "123.45.123.45 my-server-address.com" è davvero lì.

Qualcuno può aiutarmi con questo? Sono il newbee di Docker.

+0

Che messaggio di errore ricevi? Sei dietro un proxy? – VonC

+0

@VonC Il messaggio di errore è 'host non trovato in upstream" ms-test.internal.pricefx.eu "in /etc/nginx/sites/ms.dev.topmonks.com: 36' (già menzionato sopra). Non c'è proxy –

+0

Che comando stai usando per costruire la tua immagine? (Significato, hai creato l'immagine taggata 'media-saturn: dev' in cui è riuscito un' wget ms-test.internal.pricefx.eu?) – VonC

risposta

1

Ho risolto questo. Ci sono due cose in gioco.

Uno è come funziona localmente e l'altro è come funziona in Docker Cloud.

flusso di lavoro locale

  • cd nella root del progetto, in cui Dockerfile si trova
  • immagine costruzione: docker build -t media-saturn:dev .
  • eseguire l'immagine builded: docker run -it --add-host="my-server-address.com:123.45.123.45" -p 80:80 media-saturn:dev

Docker del flusso di lavoro di cloud

  • Aggiungi extra_host direttiva al vostro Stackfile, come questo
  • e quindi fare clic su Ridistribuisci in Docker nuvola, in modo che le modifiche abbiano effetto

    extra_hosts:

    • 'il mio-server-indirizzi. com: 123.45.123.45'

Suggerimento per l'ottimizzazione

  • ignorano il maggior numero di cartelle come possibile accelerare il processo di invio dei dati a finestra mobile demone
  • aggiungere .dockerignore file di
  • in genere si desidera aggiungere cartelle come node_modelues, bower_modules e tmp
  • nel mio caso il tmp conteneva circa 1.3 GB di piccoli file, quindi ignorarlo velocizzò significativamente il processo
Problemi correlati