docker/nginx/replace_vars.sh

64 lines
1.8 KiB
Bash
Raw Normal View History

2025-05-15 13:40:19 +08:00
#!/bin/bash
# 加载环境变量
source ../environment.sh
echo "开始替换配置文件中的环境变量..."
# 检查vhosts目录是否存在
if [ ! -d "vhosts" ]; then
echo "错误: vhosts目录不存在!"
exit 1
fi
# 检查vhosts目录中是否有配置文件
2025-05-15 14:21:50 +08:00
if [ -z "$(ls -A vhosts/*.conf 2>/dev/null)" ]; then
echo "警告: vhosts目录中没有.conf文件没有配置文件需要处理"
2025-05-15 13:40:19 +08:00
fi
# 创建临时目录
TEMP_DIR="temp_vhosts"
rm -rf $TEMP_DIR
mkdir -p $TEMP_DIR
2025-05-15 14:21:50 +08:00
# 处理所有.conf文件替换环境变量跳过cert目录
2025-05-15 13:40:19 +08:00
for conf_file in vhosts/*.conf; do
2025-05-15 14:21:50 +08:00
# 检查文件是否存在(处理无匹配文件的情况)
if [ ! -f "$conf_file" ]; then
continue
fi
# 跳过cert目录中的文件
if [[ "$conf_file" == *"/cert/"* ]]; then
continue
fi
2025-05-15 13:40:19 +08:00
filename=$(basename "$conf_file")
echo "处理文件: $filename"
2025-05-15 13:46:06 +08:00
# 读取原始文件内容
content=$(cat "$conf_file")
2025-05-15 13:40:19 +08:00
# 获取environment.sh中所有环境变量
env_vars=$(grep -E "^export [A-Z_]+" ../environment.sh | sed 's/export //')
2025-05-15 13:46:06 +08:00
# 逐个替换环境变量
2025-05-15 13:40:19 +08:00
for var in $env_vars; do
var_name=$(echo $var | cut -d= -f1)
2025-05-15 13:46:06 +08:00
var_value=${!var_name}
if [ ! -z "$var_value" ]; then
# 使用简单的变量替换方法
pattern="\\\${$var_name}"
echo " 替换变量: ${pattern} -> $var_value"
content=$(echo "$content" | sed "s|${pattern}|$var_value|g")
fi
2025-05-15 13:40:19 +08:00
done
2025-05-15 13:46:06 +08:00
# 写入处理后的内容到目标文件
echo "$content" > "$TEMP_DIR/$filename"
2025-05-15 13:40:19 +08:00
echo " 文件处理完成: $filename"
done
echo "环境变量替换完成! 替换后的文件位于 $TEMP_DIR/ 目录"
echo "请检查替换结果,确认无误后运行 build_image.sh 构建镜像"