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
|
|||
|
|
```
|
|||
|
|
|