fix(deploy): APP_USER 默认取部署目录属主,不写死 zcbot
与 APP_DIR 同思路:服务用户默认 = 部署目录属主(bootstrap chown 后即服务 用户),仍可 env 覆盖。加两道前置:推成 root 时 warn(服务/沙箱不该跑 root, HOST_UID 要对齐 bind mount 属主),用户不存在直接 fail。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
e8aeef19de
commit
b6faeda83d
|
|
@ -15,7 +15,7 @@
|
|||
# 一次性 bootstrap(useradd / 写 systemd unit / enable)不在这里 —— 见 RUN.md §部署 一次性。
|
||||
#
|
||||
# 可调 env(不传则用默认 / Dockerfile 默认):
|
||||
# APP_DIR(默认=脚本上级目录,即仓库根) APP_USER(zcbot) SERVICE(zcbot) PORT(8765)
|
||||
# APP_DIR(默认=脚本上级目录,即仓库根) APP_USER(默认=部署目录属主) SERVICE(zcbot) PORT(8765)
|
||||
# APT_MIRROR / PIP_INDEX_URL / PIP_TRUSTED_HOST / NPM_REGISTRY 镜像源,
|
||||
# 默认阿里源(境内快);要稳定命中 docker cache 就别在两组源之间来回换
|
||||
# (换源会从 pip 层炸开全重跑)。想用官方源:PIP_INDEX_URL= sudo -E bash ...(置空)
|
||||
|
|
@ -28,7 +28,9 @@ set -euo pipefail
|
|||
# / 经软链调用(Ubuntu coreutils 有 readlink -f)。
|
||||
SCRIPT_DIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
|
||||
APP_DIR="${APP_DIR:-$(dirname "$SCRIPT_DIR")}"
|
||||
APP_USER="${APP_USER:-zcbot}"
|
||||
# 服务用户默认 = 部署目录属主(bootstrap 时 chown zcbot:zcbot /opt/zcbot,属主即服务用户),
|
||||
# 不写死;可 env 覆盖。推成 root 见下方前置检查 warn。
|
||||
APP_USER="${APP_USER:-$(stat -c %U "$APP_DIR")}"
|
||||
SERVICE="${SERVICE:-zcbot}"
|
||||
PORT="${PORT:-8765}"
|
||||
IMAGE="zcbot-sandbox:latest"
|
||||
|
|
@ -52,6 +54,10 @@ asuser() { sudo -u "$APP_USER" "$@"; }
|
|||
[ -d "$APP_DIR/.git" ] || fail "$APP_DIR 不是 git 仓库(部署目录不对?)"
|
||||
[ -x "$PY" ] || fail "找不到 venv python:$PY"
|
||||
[ -f "$APP_DIR/.env" ] || fail "缺 $APP_DIR/.env(ZCBOT_DB_URL 等)"
|
||||
# 服务用户落到 root 八成是部署目录属主不对(systemd 服务 / 沙箱不该跑 root,
|
||||
# HOST_UID 还要跟 bind mount 属主对齐);提醒但不强制中止
|
||||
[ "$APP_USER" = "root" ] && log "WARN: APP_USER 推导为 root(部署目录属主是 root?)── 确认服务确实以 root 跑;否则 APP_USER=zcbot sudo -E bash $0"
|
||||
id "$APP_USER" >/dev/null 2>&1 || fail "服务用户不存在:$APP_USER(检查部署目录属主 / 显式设 APP_USER)"
|
||||
|
||||
# 工作区脏(仅看已跟踪文件;.venv/.env/workspace 都 gitignore,不算)→ 中止,
|
||||
# 避免 ff-only 失败或把本地手改卷进部署
|
||||
|
|
|
|||
Loading…
Reference in New Issue