Skip to main content

运行命令行和脚本

dotenvx除了提供SDK和应用集成,还提供了一种命令行运行程序的方式进行dotenvx集成,也就是dotenvx run --命令。

dotenvx run --命令行主要负责两项任务:

  • 解密.env文件中的配置项,然后以环境变量的方式注入为要启动进程的环境变量
  • 协助启动程序或运行脚本: 也就是dotenvx要负责启动程序或脚本,这个和shell脚本中准备环境变量,然后运行对应的命令行,原来上是一致的。

假设你有一个.env文件,内容如下:

# ---
# uuid: 019848e9-caa9-7683-87db-a53b6342c808
# sign: nXhj87CsVEZJO1excN4r95GcoZkdq0dRJMkGrzQ4dJwcqbf3HGze5JP5m15U0GGdunnRtmouId+2G8qCq9nY+g==
# ---

DOTENV_PUBLIC_KEY="02e8d78f0da7fc3b529d503edd933ed8cdc79dbe5fd5d9bd480f1e63a09905f3b3"

# env variables
NICK=encrypted:BCZbVuU0Yipic1qnoel+S29rKpqvigngNmD9pCdU9x9bp/RIoRMrtktZ3Qa+QR2kqWCss9xVXuULgzPB+o53RgmghXnwgyG1a0xurLHRijHF6g9uvr7UR7w5xcupRtcjoLKy1p5XmA==

如果你运行dotenvx run -- echo '$NICK',则会输出NICK对应的解密值。 同样,你可以运行dotenvx run -- ./script1.sh,那么script1.sh脚本就可以引用.env文件中的配置项了。

同样的方式,你还可以使用启动程序,如下:

  • 运行Node.js应用:dotenvx run -- node index.js
  • 运行Python应用:dotenvx run -- python app.py

借助dotenvx run --命令,你可以轻松地在任何脚本或程序中使用dotenvx的配置项,而不需要修改现有的代码。 如果你的应用是通过环境变量注入方式获取配置项的,如K8S的ConfigMap,那么这种方式就非常适合了。

有同学可能会问题,我的程序是通过内部的Shell脚本来启动的,内部有标准的启动流程,那么我应该如何整合dotenvx呢? 你只需要在启动的shell脚本中添加以下一行即可:

eval $(dotenvx decrypt --export)

这样就可以将.env文件中加密的配置项通过dotenvx进行解密,并导出为环境变量,然后再执行后续的启动流程。