feat(docker): docker-compose.hub.yml 改为从仓库拉取源码构建的单文件部署(v1.2.16)
CI / verify (push) Canceled after 0s

- build.context 改用 Git 地址(http://45.207.223.190:10082/mrlee/-Fonu.git#main),由 BuildKit 自己克隆后构建:干净机器只需这一个 compose 文件 + 一个 .env,不必先 git clone;升级即回目录重跑 docker compose up -d --build

- FONU_SESSION_SECRET 改为必填(\),没给值直接拒绝启动并给出生成命令,避免用 change-me-in-production 跑在公网

- 文件头补齐完整用法与前提(需要 BuildKit、匿名可读则无需凭据、80/443 被占用改用 host 那份)
This commit is contained in:
2026-09-27 14:58:47 +08:00
parent e0202a872f
commit 84842e9359
4 changed files with 34 additions and 6 deletions
+13
View File
@@ -2,6 +2,19 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
## [v1.2.16] - 2026-09-27
### 改进
- **`docker-compose.hub.yml` 改为「单文件从仓库拉取源码构建」**:`build.context` 直接用 Git 地址(`http://45.207.223.190:10082/mrlee/-Fonu.git#main`),由 BuildKit 自己克隆后再构建——干净机器上**只需要这一个 compose 文件 + 一个 `.env`**,不必先手动 `git clone`。升级也是回该目录重跑 `docker compose up -d --build`(会重新拉 `main` 的当前代码)。文件头补齐了完整用法
- **会话密钥不再静默回退**:这一份把 `FONU_SESSION_SECRET` 写成必填(`${FONU_SESSION_SECRET:?...}`),没在 `.env` 里给值就直接拒绝启动并给出生成命令,避免用 `change-me-in-production` 直接跑在公网
### 变更
- 版本号提升到 1.2.16;`web/package.json` 同步对齐
- 本轮不含 agent 行为变更,`AgentVersion` 仍为 0.12.7
- 三个 compose 的分工:`docker-compose.yml`(本地源码上下文)、`docker-compose.hub.yml`(**从仓库拉取**)、`docker-compose.host.yml`(host 网络,仍需本地源码)
## [v1.2.15] - 2026-09-27 ## [v1.2.15] - 2026-09-27
### 新增 ### 新增
+1 -1
View File
@@ -1 +1 @@
1.2.15 1.2.16
+19 -4
View File
@@ -1,10 +1,23 @@
# 本地构建并打标签(原为从 Docker Hub 拉取 muxui/fonu,本地项目无需拉取) # 从仓库拉源码构建并启动(适合干净机器:只需要这一个文件 + 一个 .env)
# 镜像 tag 随 VERSION 变(默认 fonu:local),可直接 docker save 导出或自行推送 #
# 用法:
# mkdir -p /opt/fonu && cd /opt/fonu
# # 取本文件(按你仓库页面上的「原始文件」链接下载,或 git clone 后复制过来):
# # curl -fsSLo docker-compose.hub.yml <仓库里这个文件的原始地址>
# printf 'FONU_SESSION_SECRET=%s\n' "$(openssl rand -hex 32)" > .env
# docker compose up -d --build
#
# 构建上下文用的是 Git 地址:BuildKit 会自己把仓库克隆下来,不需要先 git clone 到本地;
# 仓库匿名可读时无需凭据。需要认证时改用 https://<用户名>:<令牌>@<主机>/<路径>.git,
# 或先 git clone 后用 docker-compose.yml(本地上下文那份)。
#
# 首次构建要拉前端与 Go 依赖,比较慢;之后靠 Dockerfile 里的 cache mount 复用缓存。
# 80/443 已被占用(如飞牛 NAS)请改用 docker-compose.host.yml。
name: fonu name: fonu
services: services:
fonu: fonu:
build: build:
context: . context: http://45.207.223.190:10082/mrlee/-Fonu.git#main
args: args:
NODE_IMAGE: ${NODE_IMAGE:-docker.m.daocloud.io/library/node:22-alpine} NODE_IMAGE: ${NODE_IMAGE:-docker.m.daocloud.io/library/node:22-alpine}
GO_IMAGE: ${GO_IMAGE:-docker.m.daocloud.io/library/golang:1.23-bookworm} GO_IMAGE: ${GO_IMAGE:-docker.m.daocloud.io/library/golang:1.23-bookworm}
@@ -22,7 +35,9 @@ services:
environment: environment:
FONU_DATA_DIR: /data FONU_DATA_DIR: /data
FONU_LISTEN: :6893 FONU_LISTEN: :6893
FONU_SESSION_SECRET: ${FONU_SESSION_SECRET:-change-me-in-production} # 不再默默回退到 change-me-in-production:没在 .env 里给值就直接拒绝启动
# (生成方式:openssl rand -hex 32)
FONU_SESSION_SECRET: "${FONU_SESSION_SECRET:?请先创建 .env 并写入 FONU_SESSION_SECRET(openssl rand -hex 32 可生成)}"
# 时区:通知消息时间按此显示(默认东八区) # 时区:通知消息时间按此显示(默认东八区)
TZ: ${TZ:-Asia/Shanghai} TZ: ${TZ:-Asia/Shanghai}
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"name": "fonu-web", "name": "fonu-web",
"private": true, "private": true,
"version": "1.2.15", "version": "1.2.16",
"packageManager": "npm@10.9.4", "packageManager": "npm@10.9.4",
"type": "module", "type": "module",
"scripts": { "scripts": {