Se eu usar uma variável de ambiente na configuração do nginx, e o nginx estiver configurado para servir apenas arquivos estáticos (html, js, css - por exemplo, um aplicativo AngularJs), existe alguma maneira de usar a variável de ambiente em um arquivo JS que o nginx serve ? Ou é a única maneira de fazer isso para executar um servidor não estático, por exemplo, io.js, php, etc.
Aliás, você não pode usar variáveis de ambiente nativamente na configuração do nginx.
Quando falo sobre os ambientes de variáveis na configuração do nginx, quero dizer como neste post: Como posso usar variáveis de ambiente no Nginx.conf, onde eles usam env APP_WEB_1_PORT_5000_TCP_ADDR;
e$ENV{"APP_WEB_1_PORT_5000_TCP_ADDR"};
Explique exatamente seu caso de uso
Meu caso de uso específico é que eu tenho um aplicativo AngularJS alimentado por nginx em um contêiner de docker. O aplicativo é um "Aplicativo de página única" que consome uma API em execução em outro sistema completamente. Atualmente, eu executo um contêiner de docker diferente entre produção e armazenamento temporário, porque o aplicativo tem algumas configurações diferentes, por exemplo, o código do Google-Analtyics. Esses dados específicos do ambiente são mantidos em um config.js
arquivo e os valores atualmente são codificados, um valor para a master
ramificação no git e um valor diferente para a staging
ramificação. Quero alterar o design para poder usar o mesmo contêiner para produção e preparação. Quero passar uma ENV var para o contêiner quando executá-la ( docker run -e GACODE=UA-12345-6 ...
) e o nginx usa a ENV var (via env GACODE;
e $ENV{"GACODE"}
assim oconfig.js
O arquivo pode usar os códigos do GoogleAnaltyics que são passados, em vez de codificá-los). Não sei se isso é possível ou não (daí a questão;)). Usar apenas o nginx torna meu contêiner um processo único, enquanto que, se eu precisar usar o io.js., precisarei de vários contêineres vinculados e mais partes móveis serão mais complexas).