angular - 如何读取配置文件以在打包为 WAR 并部署在 IBM Liberty 上的 Angular 应用程序中设置 API URL

标签 angular typescript docker deployment websphere-liberty

我已运行 ng build --prod 并将 /dist 文件夹的内容复制到动态 Web 项目的 webapps 文件夹内。

然后,我尝试将此项目导出为 .war 文件并将其部署到 Liberty 服务器上。挑战是,我在 environment.prod.ts 中设置了 API URL。

因此,如果我需要更改 API URL,我需要重新运行 ng build 并复制 /dist 的内容,然后导出为 。 war

我尝试将 API 基本 URL 设置为 window.location.origin,因为我们的 Angular 应用程序和微服务的基本 URL 相同。

我们想要的是让 API URL 从外部进行配置。例如,我们创建了最终的 .war 文件,但是当我们将其部署为 docker 上的容器时,我们读取一些配置文件并将其设置为 API URL。

最佳答案

由于您使用的是 Liberty,因此您可以使用 JAX-RS 创建一个端点(JAX-RS 教程 here ),该端点从文件或环境变量中读取您需要的基本 URL(您可以使用标准Java API 或类似 MicroProfile Config )并将它们作为响应返回。将其打包为 .war 文件的一部分。

然后,在startup上,您的 Angular 应用程序可以向此端点发出请求(您将始终知道该端点的位置,因为它与 Angular 应用程序本身来自同一 window.location,只是不同的上下文根和/或路径。 )这将为它提供工作所需的信息。

关于angular - 如何读取配置文件以在打包为 WAR 并部署在 IBM Liberty 上的 Angular 应用程序中设置 API URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56804283/

相关文章:

python - 如何检查 Docker 容器微服务中的 python 日志记录

docker - 修改grafana查询以跳过一个Docker容器

amazon-web-services - ECS 代理无法成功从 ECR 拉取镜像

angular - 重建应用程序后,Ionic Native Storage 不会持续存在

Angular组件宿主元素宽高均为0

css - 使用 ViewEncapsulation 时,是否可以将 "skin"或 "theme"设置为带有 CSS 的 Angular2 组件?

Typescript - 扩展外部 Javascript 库

arrays - typescript :对象数组的valueof字段

typescript - 不同作用域变量的类型推断

css - 在 angular-cli.json 中导入全局样式和将它们分别添加到每个组件中的每个 css 之间有什么区别?