首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角度与码头:环境感知配置

角度与码头:环境感知配置
EN

Stack Overflow用户
提问于 2017-06-14 15:55:53
回答 1查看 4.9K关注 0票数 16

我们递归地设置一个带有角4的SPA,在Azure上与Docker一起托管它。通常,环境(Prod、Development、the )与环境-Con图(如果我们使用Angular build命令编译)一起被设置为角。这很好,但是Docker的工作流程有点不同:

  1. 构建角应用程序
  2. 初始化Docker容器
  3. 设置Docker容器环境变量
  4. 启动码头集装箱

这意味着我们有一个时间问题,因为在编译时,我们不能说,应用程序将在哪个环境上运行。对于服务器(.net核心)来说,这是没有问题的,因为我们可以使用ASPNETCORE_ENVIRONMENT变量,但是我们没有找到使应用程序了解环境类型的解决方案。我几乎可以肯定,我们并不是唯一有这个问题的人,但到目前为止,我还没有找到合适的解决办法。我们不知道周围有什么可能吗?

EN

回答 1

Stack Overflow用户

发布于 2018-12-03 07:50:06

由于我的主要目标不是为每个环境创建一个容器,而是要保持构建过程环境无关,所以我想出了以下解决方案:我正在使用Docker -堆栈文件添加一个命令(我的Docker映像是NGinx):

代码语言:javascript
复制
command: /bin/bash -c "cp /usr/share/nginx/html/assets/app-settings/appsettings.__EnvironmentName__.json /usr/share/nginx/html/assets/app-settings/appsettings.json && find "/usr/share/nginx/html/assets/app-settings/" -type f -name "*.json" -not -name "appsettings.json" -exec rm {} ';' && exec nginx -g 'daemon off;'"

该命令执行三项任务:

  1. 将特定于环境的appsettings.json (见下文)复制为appsettings.json
  2. 删除除appsettings.xxx.json以外的所有appsettings.json
  3. 启动nginx

发布过程还将EnvironmentName替换为部署到的特定环境。这意味着,每个容器现在都有一个带有特定于环境的数据的appsettings.json。在角度代码上,我使用环境文件只是为了编译时,环境无关的信息:

export const environment = { production: false };

将应用程序设置保存为资产:

为了读取appsettings.json的运行时信息,我使用本地http调用创建了一个appsettings服务:

代码语言:javascript
复制
@Injectable()
export class AppSettingsProviderService {
  private appSettings: AppSettings;

  public constructor(private http: LocalHttpService) {
  }

  public async provideAppSettingsAsync(): Promise<AppSettings> {
    if (this.appSettings) {
      return Promise.resolve(this.appSettings);
    }

    // This path needs to be relative to the files in the dist-folder
    this.appSettings = await this.http.getAsync<AppSettings>('./assets/app-settings/appsettings.json');
    return this.appSettings;
  }
}

这在开发过程中同样有效,因为在本例中只使用了appsettings.json,即使使用ng服务,代码也被编译成dist,这意味着相对路径仍然正确。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44549480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档