Files
dysync/docs/部署指南.md
yuming ad97fd3da5 整理仓库:扩展 gitignore、归档文档、清理冗余 Dockerfile
- .gitignore 新增忽略 .idea/、videos/、*.tar.gz、*.csproj.user、db 运行时文件
- 根目录 15 个中文运维 md 归档到 docs/
- 删除无部署脚本引用的 Dockerfile 与 Dockerfile-arm(保留 Dockerfile.prod)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 21:28:41 +08:00

382 lines
8.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# dysync.net 部署指南
本文档详细说明如何将修改后的项目部署到生产环境。
## 📋 目录
1. [准备工作](#准备工作)
2. [构建 Docker 镜像](#构建-docker-镜像)
3. [推送到镜像仓库](#推送到镜像仓库)
4. [使用 Docker Compose 部署](#使用-docker-compose-部署)
5. [验证部署](#验证部署)
6. [常见问题](#常见问题)
---
## 🔧 准备工作
### 1. 环境要求
- **Docker**:版本 20.10+
- **Docker Compose**:版本 1.29+(或 Docker Compose V2)
- **.NET SDK 6.0**:用于构建项目(本地开发环境)
- **Node.js 18+**:用于构建前端(本地开发环境)
- **阿里云容器镜像服务账号**:用于推送镜像(或其他镜像仓库)
### 2. 创建必要的目录
```bash
# 在项目根目录创建以下目录(如果不存在)
mkdir -p db collect favorite uper logs
```
### 3. 配置镜像仓库(阿里云)
1. 登录 [阿里云容器镜像服务](https://cr.console.aliyun.com/)
2. 创建命名空间(如:`jianzhichu`)
3. 创建镜像仓库(如:`dysync.net`)
4. 获取登录凭证
---
## 🏗️ 构建 Docker 镜像
### 方式一:使用多阶段构建(推荐)
项目已提供优化的 `Dockerfile.prod`,包含前端和后端的完整构建:
```bash
# 在项目根目录执行
docker build -f Dockerfile.prod -t dysync.net:latest .
```
### 方式二:手动构建前端后构建镜像
如果多阶段构建遇到问题,可以手动构建前端:
```bash
# 1. 构建前端
cd app
pnpm install
pnpm build
cd ..
# 2. 确保 app/dist 目录存在且包含构建产物
# 3. 使用原始 Dockerfile 构建
docker build -t dysync.net:latest .
```
### 构建 ARM 架构镜像(适用于 Apple Silicon、树莓派等)
```bash
# 使用 Dockerfile-arm(如果存在)
docker build -f Dockerfile-arm -t dysync.net:arm-latest .
# 或者使用 buildx 构建多架构镜像
docker buildx build --platform linux/amd64,linux/arm64 -t dysync.net:latest .
```
---
## 📤 推送到镜像仓库
### 1. 登录阿里云容器镜像服务
```bash
# 替换为你的实际信息
docker login --username=你的用户名 registry.cn-hangzhou.aliyuncs.com
# 输入密码(在阿里云控制台获取)
```
### 2. 标记镜像
```bash
# 标记镜像(替换为你的实际仓库地址)
docker tag dysync.net:latest registry.cn-hangzhou.aliyuncs.com/jianzhichu/dysync.net:latest
# 如果构建了 ARM 版本
docker tag dysync.net:arm-latest registry.cn-hangzhou.aliyuncs.com/jianzhichu/dysync.net:arm_1.0
```
### 3. 推送镜像
```bash
# 推送 AMD64 版本
docker push registry.cn-hangzhou.aliyuncs.com/jianzhichu/dysync.net:latest
# 推送 ARM 版本(如果构建了)
docker push registry.cn-hangzhou.aliyuncs.com/jianzhichu/dysync.net:arm_1.0
```
---
## 🚀 使用 Docker Compose 部署
### 1. 准备 docker-compose.yml
项目根目录已包含 `docker-compose.yml` 文件,根据实际情况修改路径:
```yaml
version: '3.8'
services:
dysync:
image: registry.cn-hangzhou.aliyuncs.com/jianzhichu/dysync.net:latest
container_name: dysync
restart: always
ports:
- "10101:10101"
volumes:
- ./db:/app/db # 数据库目录
- ./collect:/app/collect # 收藏视频目录
- ./favorite:/app/favorite # 喜欢视频目录
- ./uper:/app/uper # 博主视频目录(可选)
- ./logs:/app/logs # 日志目录(可选)
environment:
- TZ=Asia/Shanghai
dns:
- 8.8.8.8
- 114.114.114.114
```
### 2. 修改路径映射
**重要**:根据你的实际存储路径修改 `volumes` 部分:
```yaml
volumes:
# Linux/Unix 路径示例
- /volume1/docker/dysync/db:/app/db
- /volume2/media/dysync/collect:/app/collect
- /volume2/media/dysync/favorite:/app/favorite
# Windows 路径示例(使用正斜杠)
- D:/dysync/db:/app/db
- D:/dysync/collect:/app/collect
- D:/dysync/favorite:/app/favorite
# macOS 路径示例
- ~/dysync/db:/app/db
- ~/dysync/collect:/app/collect
- ~/dysync/favorite:/app/favorite
```
### 3. 启动服务
```bash
# 启动服务(后台运行)
docker-compose up -d
# 查看日志
docker-compose logs -f
# 查看服务状态
docker-compose ps
```
### 4. 停止服务
```bash
# 停止服务
docker-compose down
# 停止并删除数据卷(谨慎使用,会删除数据)
docker-compose down -v
```
---
## ✅ 验证部署
### 1. 检查容器状态
```bash
docker ps | grep dysync
```
应该看到容器正在运行。
### 2. 检查日志
```bash
docker logs dysync
# 或
docker-compose logs -f dysync
```
应该看到类似输出:
```
dy.net service started successfully
Now listening on: http://[::]:10101
```
### 3. 访问应用
打开浏览器访问:
- **前端界面**:`http://你的服务器IP:10101`
- **Swagger API**:`http://你的服务器IP:10101/swagger`(如果启用)
### 4. 测试功能
1. 使用默认账号登录:`douyin` / `douyin2025`
2. 配置抖音 Cookie 和路径
3. 测试视频同步功能
---
## 🔄 更新部署
### 更新镜像并重启
```bash
# 1. 拉取最新镜像
docker-compose pull
# 2. 重启服务(会使用新镜像)
docker-compose up -d
# 3. 查看更新后的日志
docker-compose logs -f
```
### 重新构建并部署
```bash
# 1. 构建新镜像
docker build -f Dockerfile.prod -t dysync.net:latest .
# 2. 标记并推送
docker tag dysync.net:latest registry.cn-hangzhou.aliyuncs.com/jianzhichu/dysync.net:latest
docker push registry.cn-hangzhou.aliyuncs.com/jianzhichu/dysync.net:latest
# 3. 在服务器上拉取并重启
docker-compose pull
docker-compose up -d
```
---
## 🐛 常见问题
### 1. 镜像构建失败
**问题:前端构建失败**
```bash
# 检查 Node.js 版本
node --version # 应该是 18+
# 清除缓存重新构建
cd app
rm -rf node_modules dist
pnpm install
pnpm build
```
**问题:后端构建失败**
```bash
# 检查 .NET SDK 版本
dotnet --version # 应该是 6.0.x
# 清除构建缓存
dotnet clean
dotnet restore
```
### 2. 容器启动失败
**问题:端口被占用**
```bash
# 检查端口占用
lsof -i :10101 # Linux/macOS
netstat -ano | findstr :10101 # Windows
# 修改 docker-compose.yml 中的端口映射
ports:
- "10102:10101" # 使用其他端口
```
**问题:权限错误**
```bash
# 确保目录有写权限
chmod -R 755 db collect favorite uper logs
# 或者使用 sudo(不推荐)
sudo docker-compose up -d
```
### 3. 数据丢失问题
**问题:容器删除后数据丢失**
- 确保 `volumes` 配置正确
- 使用绝对路径而不是相对路径
- 定期备份 `db` 目录
### 4. 网络问题
**问题:无法访问外网**
- 检查 DNS 配置
- 检查防火墙设置
- 使用 `network_mode: bridge` 或 `host`
### 5. 镜像拉取失败
**问题:认证失败**
```bash
# 重新登录
docker logout registry.cn-hangzhou.aliyuncs.com
docker login registry.cn-hangzhou.aliyuncs.com
```
**问题:网络超时**
```bash
# 使用国内镜像加速器
# 在 /etc/docker/daemon.json 添加:
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com"
]
}
```
---
## 📝 部署检查清单
- [ ] Docker 和 Docker Compose 已安装
- [ ] 创建了必要的目录(db, collect, favorite 等)
- [ ] 修改了 docker-compose.yml 中的路径映射
- [ ] 构建了 Docker 镜像(或使用现有镜像)
- [ ] 推送到镜像仓库(或使用本地镜像)
- [ ] 启动了 Docker Compose 服务
- [ ] 验证了容器正常运行
- [ ] 能够访问前端界面
- [ ] 能够登录系统
- [ ] 配置了抖音 Cookie 和路径
- [ ] 测试了视频同步功能
---
## 🔐 安全建议
1. **修改默认密码**:首次登录后立即修改默认密码
2. **使用 HTTPS**:生产环境建议配置反向代理(Nginx)并启用 HTTPS
3. **防火墙配置**:只开放必要的端口(10101)
4. **定期备份**:定期备份 `db` 目录和重要数据
5. **更新镜像**:定期更新镜像以获取安全补丁
---
## 📚 相关文档
- [本地启动指南](./本地启动指南.md)
- [视频预览功能说明](./视频预览功能说明.md)
- [README.md](./README.md)
---
**最后更新**:2024-11-22
**版本**:v1.0