3.2 KiB
title, type, permalink, stable_id, scope, project_id, memory_type, status, revision, restored_from_commit, created_at, updated_at, tags
| title | type | permalink | stable_id | scope | project_id | memory_type | status | revision | restored_from_commit | created_at | updated_at | tags | |||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Checkpoint 2026-09-03 01:14:45 UTC [5d880ea609] | checkpoint | main/projects/d1932ed6-07d3-4463-a224-8534ffd69a07/checkpoint-2026-09-03-01-14-45-utc-5d880ea609 | b5e9162b-d6c3-4593-9b7c-790af4145192 | project | d1932ed6-07d3-4463-a224-8534ffd69a07 | checkpoint | active | 1 | 6a6a895eaf |
2026-09-23T15:04:43.496680+00:00 | 2026-09-23T15:04:43.496754+00:00 |
|
完成内容:按用户需求为 NextOffice 增加宿主机端口冲突/占用检查。deploy.py 新增 docker_published_ports / port_holder / choose_port / check_configured_ports;create_or_load_config 用 choose_port 处理 --nextcloud-port/--onlyoffice-port 与交互输入(默认 8080/8081 被占用时自动建议下一个可用端口;被占用/越界/非数字/两端口相同均拒绝);已有 .env 重跑时在拉镜像前预检端口并提示用 manage.py reconfigure 更换;validate_port 改为中文提示。manage.py 通过 from deploy import choose_port 复用,reconfigure 的端口输入获得同样校验,并补充子命令帮助文本。README 增加端口自定义与检查说明;docs/INSTALL.md 新增“自定义端口与占用检查”小节,docs/TROUBLESHOOTING.md 新增“端口已被占用”排障(docs/ 被 .gitignore 忽略,仅本地)。AGENT.md 按用户选择加入 .gitignore 不提交。
验证:python -m py_compile deploy.py manage.py 通过;deploy.py --help / manage.py reconfigure --help 正常;docker compose --env-file .env.example config --quiet 通过;临时脚本(已删除)覆盖正则解析(含端口区间、忽略 UDP)、本机监听端口判定、外部容器 vs 本项目容器判定、CLI 值被占用/保留/越界/非数字抛 InstallError、交互模式建议可用端口与重新提示、check_configured_ports 报错与放行,全部通过;本机正在运行的 nextoffice 实例(8080/8081)被正确识别为自有端口不报冲突。已提交 7b3796e(feat: 部署与端口变更时检查宿主机端口冲突并建议可用端口),仅本地 commit 未 push,工作区干净。
问题与取舍:PowerShell 直接执行 docker ps 模板会吞双引号导致 template 解析失败,但 Python subprocess 以参数列表传递不受影响,验证必须走 Python;控制台中文乱码为 PowerShell 编码显示问题,可用 PYTHONIOENCODING=utf-8 + [Console]::OutputEncoding=UTF8 处理。特权端口非 root 时 bind 抛 PermissionError,选择放行交给 Docker。
下一步 / 给下个会话:用户尚未选择的候选方向——(1) manage.py restore(docs/BACKUP-RESTORE.md 提到“恢复脚本”但不存在);(2) reconfigure 会把 trusted_domains 索引 0 的通配 #^.+$# 覆盖成 IP:端口而旧地址残留在索引 3,与 deploy.py 设置不一致,尚未修复;(3) 离线镜像包导出命令;(4) HTTPS 一键切换;(5) upgrade 与 backup --keep。注意 deploy.py 里 create_or_load_config 与 ensure_images 都打印 “[1/6]”,步骤编号有小瑕疵未改。本机 Docker Desktop 正运行一套 nextoffice 实例,占用 8080/8081,测试时不要误停。