
oaudry/envsubst本镜像整合了envsubst工具与bash shell,提供轻量级解决方案,用于在容器化环境中高效处理环境变量替换及执行bash脚本。基于轻量级基础镜像构建,体积小巧,启动快速,适用于各类需要动态配置文件生成或环境变量预处理的场景。
envsubst工具,支持将文本文件中的$VARIABLE或${VARIABLE}格式占位符替换为实际环境变量值将本地模板文件中的环境变量替换为实际值:
bash# 准备模板文件 input.template(内容示例:"Hello, $NAME!") # 执行替换并输出到output.txt docker run --rm \ -v $(pwd):/workspace \ # 挂载当前目录到容器内/workspace -e NAME="World" \ # 设置环境变量NAME my-envsubst-bash-image \ # 镜像名称 envsubst < /workspace/input.template > /workspace/output.txt
仅替换指定的环境变量(避免替换模板中其他未定义的变量):
bashdocker run --rm \ -v $(pwd):/workspace \ -e NAME="World" -e AGE=30 \ my-envsubst-bash-image \ envsubst '$NAME' < /workspace/input.template > /workspace/output.txt # 仅替换$NAME,保留$AGE占位符
运行包含环境变量逻辑的bash脚本:
bash# 准备脚本文件 script.sh(内容示例: # #!/bin/bash # echo "Name: $NAME, Age: ${AGE:-20}" # ) docker run --rm \ -v $(pwd):/workspace \ -e NAME="Alice" \ my-envsubst-bash-image \ bash /workspace/script.sh # 输出:Name: Alice, Age: 20(AGE未定义时使用默认值20)
在容器启动前生成配置文件:
yamlversion: '3' services: app: image: my-app-image depends_on: config-generator: condition: service_completed_successfully volumes: - ./config:/app/config # 挂载生成的配置文件 config-generator: image: my-envsubst-bash-image volumes: - ./templates:/templates - ./config:/output environment: - DB_HOST=db - DB_PORT=5432 - DB_USER=admin command: bash -c "envsubst < /templates/app.config.template > /output/app.config"
| 参数格式 | 说明 |
|---|---|
envsubst | 替换输入文本中所有$VARIABLE或${VARIABLE}格式的环境变量 |
envsubst '$VAR1,$VAR2' | 仅替换指定的环境变量(多个变量用逗号分隔),未指定的变量占位符保持不变 |
envsubst < input > output | 从标准输入读取模板,替换后输出到标准输出 |
-e VAR=value(Docker Run)或environment字段(Docker Compose)传递环境变量--env-file .env加载.env文件中的环境变量-u $(id -u):$(id -g)指定用户ID,避免权限问题)$符号的非环境变量场景(如需保留$,可使用\$转义)manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务