142 lines
2.7 KiB
Markdown
142 lines
2.7 KiB
Markdown
# 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
|
||
```
|
||
|