Files
tools-show/docs/DOCKER_RUN_TOOLSSHOW.md

142 lines
2.7 KiB
Markdown
Raw Normal View History

2026-03-27 10:18:26 +08:00
# 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
```