使用Nginx中的Angular应用程序管理环境

时间:2018-04-11 17:03:59

标签: angular docker nginx environment-variables

我正在使用Angular 5,Nginx用于我的前端应用程序,Node.js用于我的后端。一切都将在Docker中运行。

我需要为后端和前端创建多个环境(登台,制作......)。后面很简单,我在我的Docker组合中使用NODE_ENV。但前面呢?

由于我使用Angular和AOT,在Nginx中提供dist文件夹,我不知道如何动态更改env。我现在找到的唯一解决方案是用ng build --env=staging构建前端的多个版本,一个用env构建,在DTR中推送每个Docker镜像并按env名称获取这些图像。

这非常麻烦,我想知道是否有人遇到同样的问题并找到了更好的方法。或者整个事情可能是一个坏主意?

欢迎所有潜在客户!

1 个答案:

答案 0 :(得分:0)

您可以使用在运行时检索的配置json文件创建一个包,如图所示here

如果您有多个config.[envName].json个文件(每个环境1个),那么,当您运行图像时,您需要将相应环境的文件复制到config.json,这将是请求的文件。角)

要实现这一点,您可以运行复制文件的bash脚本(由于环境变量而确定),然后在运行图像时启动nginx,而不是直接启动nginx

<强> run.sh

#!/bin/sh
cp /config/folder/path/config.$ENVNAME.json /config/folder/path/config.json
#start nginx

并将该文件作为docker命令运行

其他选项

如果安装了lua模块,你可以编写一些动态脚本,根据一些环境变量(lua可以访问)提供正确的json配置文件