4 votes

Utilisation des variables d'environnement Docker dans une application Angular2

Je voudrais utiliser une variable d'environnement Docker prédéfinie dans le fichier 'environment.prod.ts' d'Angular-Cli (1.0.0-beta.16).

usecase :

environnement.prod.ts :

export const environment = {
production: true,
host1: $ENV1, //specific service endpoint goes here
host2: $ENV2 //specific service endpoint goes here
};

mon application basée sur Angular CLI dépend de environment.prod.ts pour récupérer les informations relatives aux services backend (host1, host2) et l'application passe par différents environnements comme DEV,TEST,QA,PROD ...

$ENV1 , $ENV2 sont fournis comme variables d'environnement pendant l'exécution de Docker.

Est-ce possible ? Si ce n'est pas le cas, veuillez corriger ma compréhension et suggérer d'autres solutions alternatives.

0voto

david Points 554

Les environnements Angular cli sont des constantes à la compilation. Cela contredit bien sûr un peu la façon dont vous pensez à une application lorsque vous utilisez Docker. Avec Docker, vous voulez exécuter le même artefact dans différents environnements (en utilisant des variables d'environnement).

Jusqu'à présent, j'ai trouvé deux solutions, bien qu'elles me paraissent toutes les deux un peu bricolées :

Utiliser le rendu côté serveur

... et injecter les variables dans la portée globale. Vous pouvez simplement ajouter un autre <script> avec les variables requises après la balise d'ouverture <html> étiquette :

<script>
var environment = { 
  host1: 'some injected value', 
  host2: 'depending on the view engine you are using' 
};
</script>

et de disposer d'une interface

export interface Environment {
  host1: string;
  host2: string;
}

interface Window {
  environment: Environment;
}

Utiliser un appel API

... pour récupérer les variables au démarrage/après le démarrage de l'application

Vous pouvez le faire dans le app.component.ts en onInit() ou avoir un gardien sur votre tout premier itinéraire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X