我已经将头撞在墙上几个小时,试图弄清楚这个问题。
我的node.js代码使用环境变量let { GAC } = process.env
const firestore = new Firestore({ keyFilename: GAC })
来向Google Cloud进行身份验证。
GAC
printenv
是包含秘密密钥,id等的json文件的路径。
在我的本地计算机上,GAC="${HOME}/project-id.json"
显示:
GAC
很明显,文件本身位于应有的位置。
现在,我想运行一个docker容器,并向其传递$ docker run \
-e GAC=$GAC \
-v $GAC:$GAC \
-t image \
printenv
变量和json文件,以便我的代码可以正常运行。
GAC
我想将未扩展 printenv
变量传递给docker。因此,容器中的printenv
应该与本地计算机上的GAC="${HOME}/project-id.json"
完全一样。
$GAC
但是,在运行命令之前,shell会展开printenv
变量。因此,容器中的GAC="C:\Users\eric\project-id.json"
看起来像这样
GAC
这是不正确的。
如何正确执行此操作?我希望我的代码检索StartupPreferencesLoader
env变量,无论它是在本地计算机上还是在容器中运行。