我正在使用Angular 5,Nginx用于我的前端应用程序,Node.js用于我的后端。一切都将在Docker中运行。
我需要为后端和前端创建多个环境(登台,制作......)。后面很简单,我在我的Docker组合中使用NODE_ENV
。但前面呢?
由于我使用Angular和AOT,在Nginx中提供dist
文件夹,我不知道如何动态更改env。我现在找到的唯一解决方案是用ng build --env=staging
构建前端的多个版本,一个用env构建,在DTR中推送每个Docker镜像并按env名称获取这些图像。
这非常麻烦,我想知道是否有人遇到同样的问题并找到了更好的方法。或者整个事情可能是一个坏主意?
欢迎所有潜在客户!
答案 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配置文件