2015-05-04 10 views
6

Ho configurato un progetto App Engine localmente utilizzando Docker (su OSX) e ho eseguito un server utilizzando il solito comando "app gicloud di anteprima app.yaml". Da quello che posso dire, questo continua a creare nuove immagini più e più volte. Dopo circa un'ora di lavoro, mi ritrovo con qualcosa come 30 immagini docker, ciascuna con 130 MB.Avvio e arresto delle istanze di App Engine con finestra mobile

Alla fine mi viene detto che non riesco più a collegarmi a localhost: 8080. Ho provato ad uccidere tutti i contenitori e le immagini, ma ancora non posso usare localhost: 8080 fino al mio riavvio.

Sembra che io non stia usando Docker/gcloud correttamente. Qualcuno ha un'idea di cosa potrei fare male? C'è un altro modo in cui dovrei riavviare le istanze di App Engine oltre a premere il comando C ed eseguire nuovamente il comando "run"?

AGGIORNAMENTO: dopo aver guardato più da vicino, ho notato che ho ricevuto questo messaggio quando eseguo un'applicazione in locale e viene creato un contenitore: "http: Hijack è incompatibile con l'uso di CloseNotifier". Non sono abbastanza familiare con Docker per capire cosa sta succedendo qui. Tutte le ricerche sembrano indicare Go, che non sto utilizzando.

UPDATE 2: Ecco la traccia:

Creating container... 
INFO  2015-05-05 02:23:28,293 containers.py:560] Container 1564ce4344957114312d6d1dc696ffbb4176b40ace6dcff5e4239e13ee04a8f6 created. 
Exception in thread Thread-2: 
Traceback (most recent call last): 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 810, in __bootstrap_inner 
    self.run() 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 763, in run 
    self.__target(*self.__args, **self.__kwargs) 
    File "/Users/judeosborn/google-cloud-sdk/platform/google_appengine/google/appengine/tools/docker/containers.py", line 643, in _ListenToLogs 
    for line in log_lines: 
    File "/Users/judeosborn/google-cloud-sdk/./lib/docker/docker/client.py", line 225, in _multiplexed_response_stream_helper 
    socket = self._get_raw_response_socket(response) 
    File "/Users/judeosborn/google-cloud-sdk/./lib/docker/docker/client.py", line 167, in _get_raw_response_socket 
    self._raise_for_status(response) 
    File "/Users/judeosborn/google-cloud-sdk/./lib/docker/docker/client.py", line 119, in _raise_for_status 
    raise errors.APIError(e, response, explanation=explanation) 
APIError: 500 Server Error: Internal Server Error ("http: Hijack is incompatible with use of CloseNotifier") 

INFO  2015-05-05 02:23:28,606 module.py:1745] New instance for module "default" serving on: 
http://localhost:8080 
+0

credo che queste siano due distinti issues-- finestra mobile ima Ges mantenuto localmente per un lungo periodo, e il porto restava legato in alcuni circs quando si esce. Per il secondo, se fai un 'ps', vedi un processo in esecuzione 'dev_appserver.py'? In tal caso, cosa succede se uccidi quel processo manualmente? Inoltre, per ricontrollare - intendevi "control-C" per uscire? –

+0

Probabilmente hai ragione su due problemi separati, anche se suppongo che siano correlati. Posso uccidere il processo. E, sì, intendo controllo-C. –

+0

Quando si verifica il problema di binding della porta, se si esegue una ps, si vede qualcosa ancora in esecuzione? Credo che tu possa cercare "dev_appserver". –

risposta

6

C'è un problema in corso con Docker 1.6.x [reference] che impedisce a gcloud di funzionare correttamente con le macchine virtuali gestite (come sembra che si stia utilizzando). La soluzione più semplice fino a quando non viene corretta è quella di eseguire il downgrade di Docker nella macchina di sviluppo alla versione 1.5.0, che è l'ultima versione nota per funzionare.

Per Ubuntu, si può fare qualcosa di simile:

$ curl -sSL https://get.docker.com/ubuntu | sed 's/lxc-docker/lxc-docker-1.5.0/' | sudo sh

Per le altre distribuzioni Linux, potrebbe essere necessario modificare tale sed modello, però.


D'altra parte, se si sta utilizzando Boot2Docker sotto Mac OS X, attenersi alla seguente procedura:

  1. completamente disinstallare la precedente Boot2Docker/setup Docker; c'è una bella guida here
  2. Reinstallare Boot2Docker/Docker seguendo le istruzioni here. IMPORTANTE: È necessario interrompere subito dopo aver completato il passaggio "Installa Boot2Docker" e prima di "Avviare l'applicazione Boot2Docker". Una volta arrivati ​​lì, aprire un terminale ed eseguire i seguenti comandi:
$ mkdir ~/.boot2docker 
$ echo 'ISOURL="https://github.com/boot2docker/boot2docker/releases/download/v1.5.0/boot2docker.iso"' > ~/.boot2docker/profile 

A questo punto, è possibile continuare con la sezione "Avviare l'applicazione Boot2Docker" e completare l'installazione. Ora dovresti avere un launchpad Docker valido con cui avviare le VM gestite.Sarebbe bello per raddoppiare verificare di avere la versione giusta installate mediante l'emissione di:

$ boot2docker ssh docker version | egrep "(Client|Server) version"

L'output dovrebbe essere simile:

Client version: 1.5.0 Server version: 1.5.0

Ora si può provare di nuovo il comando originale :

$ gcloud preview app run app.yaml

+0

Molto utile. Grazie per avermi fatto sapere. Almeno so che non è qualcosa che sto sbagliando. –

+0

Davvero molto utile. Tuttavia ho installato 1.5.0 selezionando "Tag" nella pagina di github e selezionando il programma di installazione 1.5.0. –

+1

Ho seguito la procedura suggerita due volte e non ha funzionato per me. Ho finito con il download di boot2docker.iso da https://github.com/boot2docker/boot2docker/releases/tag/v1.5.0 e con boot2docker fermato, ho ceduto gli iso a ~/.boot2docker/e/usr/local/share/boot2docker /, ha fatto un avvio boot2docker, versione docker ssh boot2docker e tutto andava bene. 1.6.2 boot2docker con Docker 1.5 (tutto funzionante - questo è per la versione Mac) –

1

prova ad eseguire: $ ps uax | egrep "gcloud|appserver" Se vedi qualcosa in esecuzione, kill ... si può anche bisogno di kill -9 esso.

+0

Come ho già detto sopra, posso eliminare i processi bene. Non è questo il problema Sto cercando di capire perché continua a succedere. Succede quasi ogni volta che annullo il devserver. –

+0

Ti suggerisco di presentare una segnalazione di bug qui: [link] (https://code.google.com/p/googleappengine/issues/list) –

Problemi correlati