diff --git a/web/Dockerfile b/web/Dockerfile index 7372fed..b9865fe 100644 --- a/web/Dockerfile +++ b/web/Dockerfile @@ -31,4 +31,7 @@ WORKDIR /app/web HEALTHCHECK --interval=30s --timeout=4s --start-period=8s --retries=3 \ CMD python -c "import urllib.request,sys; sys.exit(0 if urllib.request.urlopen('http://127.0.0.1:8787/',timeout=3).status==200 else 1)" -CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8787"] +# STORY_WEB_RELOAD=1 时启用代码热重载(配合把 git 同步仓库整目录挂到 /app: +# 后端 app.py/db.py/ir_core 改动 push 后自动生效,无需重建镜像;仅改依赖/环境变量仍需重建)。 +# 无该变量时与原行为一致(生产默认不开监视)。 +CMD ["sh", "-c", "exec uvicorn app:app --host 0.0.0.0 --port 8787 ${STORY_WEB_RELOAD:+--reload --reload-dir /app}"] diff --git a/web/docker-compose.gitsync.yml b/web/docker-compose.gitsync.yml index 52bc9ec..52cbee9 100644 --- a/web/docker-compose.gitsync.yml +++ b/web/docker-compose.gitsync.yml @@ -1,5 +1,7 @@ # 极空间 Compose:story 事件编辑器 + 自动 git 同步。 -# 效果:本机 push 到 Gitea 后,约 1 分钟内 NAS 自动拉取最新前端,浏览器刷新即生效。 +# 效果:本机 push 到 Gitea 后,约 1 分钟内 NAS 自动拉取最新代码—— +# 前端刷新浏览器即生效;后端(app.py/db.py/ir_core)由 uvicorn --reload 自动重启生效 +# (整仓库挂到 /app + STORY_WEB_RELOAD=1)。仅改 requirements.txt/环境变量才需重建镜像。 # # 用法:极空间 Docker →「Compose / 项目」→ 新建 → 粘贴本文件 → 改下面标 ← 的 2~3 处 → 部署。 # 首次部署前:先停止并删除原来的单容器 story-event-web(数据在 /data 目录,删容器不丢)。 @@ -36,10 +38,14 @@ services: ports: - "8787:8787" environment: - STORY_WEB_PASSWORD: "change-me" # ← 改成你的共享口令 + # ← 改成实际口令(每人一把,口令即身份;≥8位且互不相同)。 + # 未配置/口令过短/重复时容器启动即退出(拒绝弱口令裸奔)。 + STORY_WEB_USERS: "bia:把我改成口令A,ljl:把我改成口令B" + STORY_WEB_RELOAD: "1" # 配合下面整仓库挂载:后端改动 push 后自动重启生效 TZ: "Asia/Shanghai" volumes: # ← 事件数据:填你原来单容器 /data 对应的 NAS 目录(务必填对,否则看不到旧数据) - "/SATA存储11/Docker/story-event-web/data:/data" - # 前端静态:直接取自同步器拉下来的仓库子目录(只读)。这条按上面的共享路径,一般不用改。 - - "/SATA存储11/Docker/story-edit-web-src/web/static:/app/web/static:ro" + # 整个同步仓库盖在 /app(只读):web/ 前端+后端、ir_core、ir_dictionary.json 全部 + # 来自 git 同步目录;镜像内的 COPY 副本只作无挂载时的兜底。路径按上面共享路径,一般不用改。 + - "/SATA存储11/Docker/story-edit-web-src:/app:ro"