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/ 之类的隔离目录,等真正需要再说
FuelLog 部署
目录
docker-compose.yml— 生产:api + web(nginx),宿主机 :8080docker-compose.dev.yml— 开发:api 容器 + 本地 build 出来的 dist 挂到 nginxnginx/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 的时候用。