Se uso una variabile d'ambiente nella configurazione di nginx e nginx è configurato per servire solo file statici (html, js, css - ad esempio un'app AngularJs), c'è un modo in cui posso usare la variabile d'ambiente all'interno di un file JS che serve a nginx ? Oppure è l'unico modo per farlo per eseguire un server non statico, ad esempio io.js, php, ecc.
Tra l'altro non è possibile utilizzare le variabili di ambiente in modo nativo nella configurazione di nginx.
Quando parlo di variabili d'ambiente nella configurazione di nginx intendo come in questo post: Come posso usare le variabili d'ambiente in Nginx.conf dove usano env APP_WEB_1_PORT_5000_TCP_ADDR;
e$ENV{"APP_WEB_1_PORT_5000_TCP_ADDR"};
Spiega esattamente il tuo caso d'uso
Il mio caso d'uso specifico è che ho un'app AngularJS basata su nginx in un contenitore docker. L'app è una "Applicazione a pagina singola" che utilizza un'API in esecuzione su un altro sistema. Attualmente eseguo un container docker diverso tra produzione e gestione temporanea perché l'app ha una configurazione diversa, ad esempio il codice Google-Analtyics. Questi dati specifici dell'ambiente vengono conservati in un config.js
file e i valori sono attualmente codificati, un valore per il master
ramo in git e un valore diverso per il staging
ramo. Voglio cambiare il design in modo da poter utilizzare lo stesso contenitore sia per la produzione che per la messa in scena. Voglio passare un var ENV nel contenitore quando lo eseguo ( docker run -e GACODE=UA-12345-6 ...
) e faccio in modo che nginx usi il var ENV (tramite env GACODE;
e $ENV{"GACODE"}
quindi ilconfig.js
file può utilizzare i codici GoogleAnaltyics che vengono passati, piuttosto che codificarli). Non so se sia possibile o meno (da qui la domanda;)). L'uso di solo nginx rende il mio contenitore un processo singolo, mentre se devo usare io.js avrò bisogno di più contenitori collegati e più parti mobili saranno più complesse).