Files
FuelLog/deploy
KennethCheng 0a7d41e406 fix(deploy): web.conf 移到 fuellog-web/ 自己的 build context
NAS 部署时 web 阶段失败:
  failed to solve: failed to compute cache key:
  "/deploy/nginx/web.conf": not found

根因:fuellog-web/Dockerfile 的 `COPY deploy/nginx/web.conf` 是相对
build context 的。web Dockerfile 的 context = fuellog-web/,所以它在找
fuellog-web/deploy/nginx/web.conf —— 实际文件在仓库根的 deploy/nginx/web.conf,
出 context 了,build 报错。

修法:把 web.conf 移到 web 自己的 build context 内,放到 fuellog-web/nginx/web.conf。
Dockerfile COPY 改成 `COPY nginx/web.conf`。同时 deploy/docker-compose.dev.yml
的 bind-mount 路径从 ./nginx/web.conf 改成 ../fuellog-web/nginx/web.conf。

deploy/nginx/web.conf 保留为重定向注释占位,deploy/ 目录在 git 里仍是
有效的,避免外部引用突然找不到。

期间顺带:dev compose 之前 `./nginx/web.conf` 路径是相对 deploy/,符合
compose 的"相对 compose 文件找依赖"约定,改成 `../fuellog-web/nginx/web.conf`
也保持一致;prod compose 不动,它只 build 不直接挂文件。

未做(留待后续):
- 把 deploy/nginx/web.conf 直接 rm 掉(目前用"重定向注释"占位);
  PowerShell 没有 mavis-trash,删文件会被拦。后续可改用 .gitkeep + 真删
  流程,或干脆用符号链接
- fuellog-web/deploy/ 之类的隔离目录,等真正需要再说
2026-09-13 18:42:22 +08:00
..

FuelLog 部署

目录

  • docker-compose.yml — 生产:api + web(nginx),宿主机 :8080
  • docker-compose.dev.yml — 开发:api 容器 + 本地 build 出来的 dist 挂到 nginx
  • nginx/web.conf — web 容器用的 nginx 配置

生产部署

# 在仓库根跑
docker compose -f deploy/docker-compose.yml up -d
# 浏览器 http://your-host:8080

数据卷 fuellog-data 名固定;容器删了 SQLite 还在。

反向代理建议

不要直接把 8080 暴露到公网,前面挡一个 Nginx Proxy Manager 或者 Traefik:

  • 申请域名 → 配 SSL(Let's Encrypt)
  • 反代到 127.0.0.1:8080
  • 容器只 listen 8080,不暴露 80

开发模式

# 1. 本地 build 前端
cd fuellog-web
pnpm install
pnpm build

# 2. 启 api + nginx(nginx 挂载刚才 build 出的 dist)
cd ..
docker compose -f deploy/docker-compose.dev.yml up

# 3. 改前端代码后只需重新 pnpm build,再 docker compose restart web

日常前端调试更推荐直接 pnpm dev(Vite :5173 自带 /api 代理),上面这套只在你不想装 Go 的时候用。