Docker 部署
Flyfish Viewer 可以作为纯静态预览站点打进 Docker 镜像,通过 nginx 托管构建后的 Demo。 镜像内同时包含主预览入口 / 和文档比对入口 /compare.html,适合内网、私有云和客户现场一键部署。
Docker Hub 一键运行
镜像发布后使用多架构 manifest,覆盖 linux/amd64 和 linux/arm64:
docker run -d \
--name flyfish-viewer \
--restart unless-stopped \
-p 8080:80 \
flyfishdev/file-viewer:1.0.22打开:
- 主预览:
http://localhost:8080/ - 文档比对:
http://localhost:8080/compare.html - 健康检查:
http://localhost:8080/healthz
如果你希望始终使用最新稳定版本:
docker run -d \
--name flyfish-viewer \
--restart unless-stopped \
-p 8080:80 \
flyfishdev/file-viewer:latestDocker Compose
services:
flyfish-viewer:
image: flyfishdev/file-viewer:1.0.22
container_name: flyfish-viewer
restart: unless-stopped
ports:
- "8080:80"
healthcheck:
test: ["CMD", "wget", "-qO-", "http://127.0.0.1/healthz"]
interval: 30s
timeout: 3s
retries: 3启动:
docker compose up -d本地构建镜像
源码仓库内提供标准 Dockerfile。本地只构建当前 CPU 架构并加载到 Docker:
pnpm docker:build默认镜像名是 flyfishdev/file-viewer,标签为当前 package.json 版本和 latest。如需改成自己的命名空间:
DOCKER_IMAGE=your-org/file-viewer pnpm docker:build本地运行:
docker run --rm -p 8080:80 flyfishdev/file-viewer:1.0.22通过 Docker Hub API 创建仓库
发布前先准备 Docker Hub Personal Access Token。仓库创建使用 Docker Hub API,镜像上传使用 Docker Registry 推送链路:
DOCKER_IMAGE=flyfishdev/file-viewer \
DOCKERHUB_USERNAME=your-dockerhub-user \
DOCKERHUB_TOKEN=dckr_pat_xxx \
pnpm docker:repo:create脚本会先检查目标仓库是否存在;如果不存在,会调用 Docker Hub API 创建公开仓库。
多架构推送到 Docker Hub
仓库创建完成后登录 Docker Hub,并确认当前账号对目标 namespace 有推送权限。如果使用自己的命名空间,请把 DOCKER_IMAGE 改成对应仓库名:
docker login推送 linux/amd64 和 linux/arm64:
DOCKER_IMAGE=flyfishdev/file-viewer pnpm docker:publish脚本默认推送两个标签:
flyfishdev/file-viewer:1.0.22flyfishdev/file-viewer:latest
如需覆盖平台或标签:
DOCKER_IMAGE=flyfishdev/file-viewer \
DOCKER_PLATFORMS=linux/amd64,linux/arm64 \
DOCKER_TAGS=1.0.22,latest \
pnpm docker:publish镜像内容
Docker 镜像只包含构建后的静态产物,不包含源码目录:
/usr/share/nginx/html/index.html: 主预览入口/usr/share/nginx/html/compare.html: 文档比对入口/usr/share/nginx/html/assets/*: Vite hash 资源/usr/share/nginx/html/example/*: 示例文件/usr/share/nginx/html/vendor/*: Worker / WASM 等静态运行时资源
nginx 配置会对 HTML 使用 max-age=0, must-revalidate,对 hash 资源和 vendor 资源使用长缓存,避免旧入口页引用已经不存在的异步 chunk。
反向代理建议
如果容器前面还有网关或统一域名,建议保持以下路径不被重写:
//compare.html/assets/*/vendor/*/example/*
示例文件、WASM 和 Worker 都是静态资源;如果网关把缺失的 .js 或 .wasm 回退成 HTML,浏览器会触发 MIME 错误。生产环境请让这些资源缺失时返回真实 404。