# ToolsShow 项目 Docker 运行指南(仅 `docker run`) 本文档只针对当前项目,使用 `docker build` + `docker run` 启动,不使用 Compose。 ## 1. 前提 - 已安装 Docker - 在项目根目录执行命令:`C:/Users/User/WebstormProjects/ToolsShow` 先验证 Docker: ```bash docker version ``` ## 2. 准备环境变量文件 本项目后端需要 `.env`。推荐直接基于模板创建: ```bash cp server/.env.example server/.env ``` Windows PowerShell 可用: ```powershell Copy-Item server/.env.example server/.env ``` 至少确认以下项存在(`server/.env`): ```env PORT=3000 DATABASE_URL="file:./dev.db" JWT_ACCESS_SECRET=change_this_access_secret JWT_REFRESH_SECRET=change_this_refresh_secret ``` 说明: - 当前项目 Prisma 使用 `SQLite`(`server/prisma/schema.prisma`)。 - `DATABASE_URL="file:./dev.db"` 对应数据库文件在容器内路径 `/app/server/prisma/dev.db`。 ## 3. 构建镜像 在项目根目录执行: ```bash docker build -t toolsshow:latest . ``` ## 4. 启动容器(只用 docker run) ### 4.1 最小启动命令 ```bash docker run -d \ --name toolsshow-app \ -p 3000:3000 \ --env-file ./server/.env \ toolsshow:latest ``` ### 4.2 推荐启动命令(带 SQLite 持久化) 建议挂载 `server/prisma`,保证数据库文件重建容器后仍保留: ```bash docker run -d \ --name toolsshow-app \ -p 3000:3000 \ --env-file ./server/.env \ -v toolsshow_prisma:/app/server/prisma \ toolsshow:latest ``` 说明: - 容器启动命令已在 `Dockerfile` 中定义:`npx prisma migrate deploy && node dist/main`。 - 首次启动会自动执行数据库迁移。 ## 5. 常用运维命令 查看运行状态: ```bash docker ps ``` 查看日志: ```bash docker logs -f toolsshow-app ``` 停止/启动容器: ```bash docker stop toolsshow-app docker start toolsshow-app ``` 删除容器(不会删除命名卷): ```bash docker rm -f toolsshow-app ``` 查看卷: ```bash docker volume ls ``` 删除 SQLite 数据卷(危险操作,会清数据): ```bash docker volume rm toolsshow_prisma ``` ## 6. 访问地址 - 应用地址:`http://localhost:3000` - 若启动后无法访问,请先看日志:`docker logs toolsshow-app` ## 7. 一次性复制命令(推荐) ```bash docker build -t toolsshow:latest . && \ docker rm -f toolsshow-app 2>/dev/null || true && \ docker run -d --name toolsshow-app -p 3000:3000 --env-file ./server/.env -v toolsshow_prisma:/app/server/prisma toolsshow:latest ``` PowerShell 对应写法: ```powershell docker build -t toolsshow:latest . docker rm -f toolsshow-app 2>$null docker run -d --name toolsshow-app -p 3000:3000 --env-file ./server/.env -v toolsshow_prisma:/app/server/prisma toolsshow:latest ```