angularjs - Docker 命令无法在运行时将参数传递给 appConfig.json 文件
问题描述
嗨,我是 docker 新手(版本 19.03.8),基本上我有一个 angularjs 项目(dummyPoject),其中包含具有以下路径的 appConfig.json 文件dummyPoject\src\assets\conf\appConfig.json
。json 文件包含以下变量:
{
"baseUrl": "MAPPED-URL"
}
基本上我想 用我在执行 docker 命令时发送的那个来覆盖MAPPED-URL属性。
根据在线文档,我发现它可以在运行 docker 命令时作为环境变量传递,请在下面找到:
docker run -e baseUrl=http://localhost:8081/dummyUrl/ -p 8000:8080 -d --name cms test:1.0
我期待 MAPPED-URL 将更改为 http://localhost:8081/dummyUrl/ 但事实并非如此。请问我在这里有什么遗漏吗?
解决方案
通过添加-e baseUrl=http://localhost:8081/dummyUrl/
到docker run
您已成功将环境变量添加到您的 docker 容器。但是这个值不会神奇地替换appConfig.json
文件中的值。
您将需要某种脚本来从环境中提取 baseUrl 变量并替换脚本中的值。这可以使用 bash 脚本来完成,该脚本在容器启动时运行并"baseUrl": "MAPPED-URL"
使用您添加的环境变量替换该行。
更新:
这个问题启发我创建了一个小的 Node.js 包命令行包,它应该有助于解决您的问题。该软件包称为replace-env
您可以添加replace-env
到您的 package.json 依赖项。然后,您可以在 Dockerfile 构建过程中运行该命令,或者您可以通过自定义CMD
指令让它在运行时修改文件。
推荐阅读
- java - WebSocket 连接到“ws://localhost:8080/WebsocketHome/actions”失败:WebSocket 握手期间出错:意外响应代码:404
- reactjs - 如何在我的反应应用程序中测试 localStorage?
- progressive-web-apps - 通过 https 在虚拟主机上的 android 上测试渐进式 Web 应用程序
- python - Pandas:计算满足条件的列之间的时间
- sas - 如何处理可能不存在的输入文件 (*.txt)
- mysql - 从mysql数据库表中删除重复行的查询
- laravel-5 - 在检索到的事件中访问 $hidden 属性
- mysql - MySQL:在子查询中对 Select * vs select 有任何性能影响吗?
- wordpress - 联系表格 7 不会解析日期?
- java - 使用 Spring 将数据从 Thymeleaf 传递到控制器