Docker命令无法在运行时将参数传递到appConfig.json文件



嗨,我是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指令来修改文件。

最新更新