From 15a50f855b79d3e4f2c81d4a14a720565c2a7b0d Mon Sep 17 00:00:00 2001 From: hhs <386998068@qq.com> Date: Sat, 20 Jun 2026 21:30:21 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=BB=9F=E4=B8=80=E4=BD=BF=E7=94=A8=20/?= =?UTF-8?q?opt/camtalk/.env=20=E8=B7=AF=E5=BE=84=EF=BC=8Cact=5Frunner=20?= =?UTF-8?q?=E6=8C=82=E8=BD=BD=E5=AE=BF=E4=B8=BB=E6=9C=BA=E7=9B=AE=E5=BD=95?= =?UTF-8?q?=E5=90=8E=E7=9B=B4=E6=8E=A5=E8=AF=BB=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/deploy.yml | 13 ------------- deploy.sh | 33 +++++++++------------------------ docker-compose.yml | 6 +++--- 3 files changed, 12 insertions(+), 40 deletions(-) diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index ff2c732..18773cb 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -27,19 +27,6 @@ jobs: rm -rf /tmp/camtalk-deploy fi - # 始终从宿主机同步最新的 .env(通过 docker 桥接,绕过 CI 容器文件系统限制) - docker run --rm \ - -v /opt/camtalk/.env:/host.env:ro \ - -v /root/camtalk:/deploy \ - alpine cp /host.env /deploy/.env 2>/dev/null || true - if [ ! -f /root/camtalk/.env ]; then - echo "==============================================" - echo " 错误: 无法从 /opt/camtalk/.env 同步环境变量" - echo " 请在服务器上执行: cp /opt/camtalk/.env /root/camtalk/.env" - echo "==============================================" - exit 1 - fi - chmod +x /root/camtalk/deploy.sh /root/camtalk/deploy.sh build /root/camtalk/deploy.sh restart \ No newline at end of file diff --git a/deploy.sh b/deploy.sh index 17558b4..eac2c1c 100755 --- a/deploy.sh +++ b/deploy.sh @@ -4,9 +4,8 @@ set -euo pipefail PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)" cd "$PROJECT_DIR" -# .env 存放于项目目录,供 docker compose env_file 读取 -#(act_runner 容器内无法访问 /opt/camtalk,需放在项目目录下) -ENV_FILE="$PROJECT_DIR/.env" +# .env 固定路径(act_runner 容器已挂载 /opt/camtalk) +ENV_FILE="/opt/camtalk/.env" # 颜色输出 GREEN='\033[0;32m' @@ -16,28 +15,14 @@ info() { echo -e "${GREEN}[INFO]${NC} $*"; } # .env 检查:首次部署时从 .env.example 复制模板,提示用户填写 check_env() { - if [ -f "$ENV_FILE" ]; then - return 0 + if [ ! -f "$ENV_FILE" ]; then + echo "==============================================" + echo " 错误: 未找到环境变量文件" + echo " 路径: $ENV_FILE" + echo " 模板参考: backend/.env.example" + echo "==============================================" + exit 1 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 diff --git a/docker-compose.yml b/docker-compose.yml index cd88bfc..74c04bd 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -18,7 +18,7 @@ services: dockerfile: Dockerfile container_name: camtalk-backend env_file: - - /root/camtalk/.env + - /opt/camtalk/.env environment: # 三级存储配置(敏感信息通过 env_file 注入) - CAMTALK_STORAGE_REDIS_ENABLED=${CAMTALK_STORAGE_REDIS_ENABLED:-true} @@ -38,7 +38,7 @@ services: image: docker.m.daocloud.io/library/postgres:15-alpine container_name: camtalk-postgres env_file: - - /root/camtalk/.env + - /opt/camtalk/.env environment: POSTGRES_DB: camtalk volumes: @@ -57,7 +57,7 @@ services: image: docker.m.daocloud.io/library/redis:7-alpine container_name: camtalk-redis env_file: - - /root/camtalk/.env + - /opt/camtalk/.env command: > sh -c ' if [ -n "$$CAMTALK_REDIS_PASSWORD" ]; then