嗨,我是docker(19.03.8版本(的新手,基本上我有一个angularjs项目(dummyProject(,其中包含appConfig.json文件,路径为dummyPojectsrcassetsconfappConfig.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
指令来修改文件。