2014-07-17 26 views
10

Provare a distribuire un'immagine Docker in AWS Elastic Beanstalk in esecuzione su una singola istanza per ora. Funziona tutto bene, a parte i WebSocket che sto usando tramite Socket.IO.WebSockets su beanbag elastico con finestra mobile

Another post suggerisce di rimuovere nginx, ma non è più possibile o semplicemente non è un'opzione per le installazioni con Docker.

Ho uno script python che modifica la configurazione di nginx per consentire connessioni WebSocket. Quando eseguo l'ssh nell'istanza ed eseguo lo script, funziona. Tuttavia, quella parte della configurazione di nginx non esiste ancora quando vengono eseguite le estensioni di ebext, quindi non posso eseguire questo script automaticamente.

Se si desidera provare da soli, sto cercando di distribuire databench_examples. Funziona quando si distribuisce questo con eb init e eb start e poi ssh nell'istanza e vai a /var/app/current ed esegui sudo python nginx_socketio_conf.py che cambia il file di configurazione di nginx. Se non funziona, viene visualizzato un errore 500 nella console del browser per l'handshake Socket.IO quando si esegue l'analisi simplepi.

risposta

6

Hai ragione che il file di configurazione di nginx non esiste quando vengono eseguite le estensioni di ebext. Ecco perché: il file di configurazione viene generato dinamicamente dopo l' l'applicazione viene distribuita perché la mappatura delle porte per il contenitore Docker non è nota fino a quando il contenitore non si arresta. Quindi il tuo fantastico script Python eseguito da ebextensions non ha un file di configurazione su cui operare.

Un altro approccio convenzionale non funziona, vale a dire, la scrittura del file di configurazione nginx al /etc/nginx/conf.d perché la direttiva location deve esistere all'interno del server blocco nel sites_enabled config. Quindi è un no.

Ho creato un PR per illustrare un approccio che funzionerà: https://github.com/svenkreiss/databench_examples/pull/3 Questa è una tecnica non documentata che elimina lo script di mutazione Python/nginx nel punto giusto nella directory degli hook di Elastic Beanstalk. Lo script viene eseguito da Elastic Beanstalk immediatamente dopo la configurazione nginx è generato (Elastic Beanstalk eseguirà script eseguibili nei ganci sottodirectory in ordine alfabetico, qui il prefisso 01_.

Grazie,

Evan

+0

Hi Evan, sto avendo un problema simile con la porta 27017 di mongoDB. Ecco la mia domanda completa (http://stackoverflow.com/q/26478962/1116959), cosa mi suggerisci di fare per sistemarla? Grazie –

+0

Per riferimento, questo PR sta facendo cadere uno script in/opt/elasticbeanstalk/hooks/appdeploy/enact/che riscrive la configurazione di Amazon. – rektide

+1

Per riavviare nginx ho dovuto usare "sudo initctl restart nginx" invece di "service restart nginx" per far funzionare correttamente questo. –

Problemi correlati