fix: env_file 改为相对路径,解决 CI 容器无法读取 /opt/camtalk/.env 的问题

This commit is contained in:
hhs
2026-06-20 19:29:12 +08:00
parent 92e6636d05
commit fe5ac20a1f
3 changed files with 56 additions and 36 deletions

View File

@@ -4,8 +4,9 @@ set -euo pipefail
PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)"
cd "$PROJECT_DIR"
# .env 固定路径(独立于项目目录,保证持久性)
ENV_FILE="/opt/camtalk/.env"
# .env 存放于项目目录,供 docker compose env_file 读取
#act_runner 容器内无法访问 /opt/camtalk,需放在项目目录下)
ENV_FILE="$PROJECT_DIR/.env"
# 颜色输出
GREEN='\033[0;32m'
@@ -15,19 +16,28 @@ info() { echo -e "${GREEN}[INFO]${NC} $*"; }
# .env 检查:首次部署时从 .env.example 复制模板,提示用户填写
check_env() {
local env_example="$PROJECT_DIR/backend/.env.example"
if [ ! -f "$ENV_FILE" ]; then
mkdir -p "$(dirname "$ENV_FILE")"
if [ -f "$env_example" ]; then
cp "$env_example" "$ENV_FILE"
info "未找到 $ENV_FILE,已从 .env.example 复制模板"
echo " 请编辑 $ENV_FILE 填入实际配置后重新运行本脚本"
exit 0
else
echo "错误: $ENV_FILE 和 .env.example 均不存在,请手动创建"
exit 1
fi
if [ -f "$ENV_FILE" ]; then
return 0
fi
# 如果项目目录没有 .env尝试从 /opt/camtalk/.env 复制(兼容旧部署)
local legacy_env="/opt/camtalk/.env"
if [ -f "$legacy_env" ]; then
cp "$legacy_env" "$ENV_FILE"
info "已从 $legacy_env 复制环境变量文件"
return 0
fi
echo "=============================================="
echo " 错误: 未找到环境变量文件"
echo ""
echo " 请在以下任一位置创建 .env 文件:"
echo " 1. $ENV_FILE"
echo " 2. $legacy_env(运行本脚本时会自动复制)"
echo ""
echo " 模板参考: backend/.env.example"
echo "=============================================="
exit 1
}
check_env
@@ -98,4 +108,4 @@ case "${1:-}" in
logs) shift; cmd_logs "$@" ;;
status) cmd_status ;;
*) usage; exit 1 ;;
esac
esac