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

8.1 KiB
Raw Permalink Blame History

dysync.net 部署指南

本文档详细说明如何将修改后的项目部署到生产环境。

📋 目录

  1. 准备工作
  2. 构建 Docker 镜像
  3. 推送到镜像仓库
  4. 使用 Docker Compose 部署
  5. 验证部署
  6. 常见问题

🔧 准备工作

1. 环境要求

  • Docker:版本 20.10+
  • Docker Compose:版本 1.29+(或 Docker Compose V2)
  • .NET SDK 6.0:用于构建项目(本地开发环境)
  • Node.js 18+:用于构建前端(本地开发环境)
  • 阿里云容器镜像服务账号:用于推送镜像(或其他镜像仓库)

2. 创建必要的目录

# 在项目根目录创建以下目录(如果不存在)
mkdir -p db collect favorite uper logs

3. 配置镜像仓库(阿里云)

  1. 登录 阿里云容器镜像服务
  2. 创建命名空间(如:jianzhichu)
  3. 创建镜像仓库(如:dysync.net)
  4. 获取登录凭证

🏗️ 构建 Docker 镜像

方式一:使用多阶段构建(推荐)

项目已提供优化的 Dockerfile.prod,包含前端和后端的完整构建:

# 在项目根目录执行
docker build -f Dockerfile.prod -t dysync.net:latest .

方式二:手动构建前端后构建镜像

如果多阶段构建遇到问题,可以手动构建前端:

# 1. 构建前端
cd app
pnpm install
pnpm build
cd ..

# 2. 确保 app/dist 目录存在且包含构建产物

# 3. 使用原始 Dockerfile 构建
docker build -t dysync.net:latest .

构建 ARM 架构镜像(适用于 Apple Silicon、树莓派等)

# 使用 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. 登录阿里云容器镜像服务

# 替换为你的实际信息
docker login --username=你的用户名 registry.cn-hangzhou.aliyuncs.com
# 输入密码(在阿里云控制台获取)

2. 标记镜像

# 标记镜像(替换为你的实际仓库地址)
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. 推送镜像

# 推送 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 文件,根据实际情况修改路径:

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 部分:

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. 启动服务

# 启动服务(后台运行)
docker-compose up -d

# 查看日志
docker-compose logs -f

# 查看服务状态
docker-compose ps

4. 停止服务

# 停止服务
docker-compose down

# 停止并删除数据卷(谨慎使用,会删除数据)
docker-compose down -v

✅ 验证部署

1. 检查容器状态

docker ps | grep dysync

应该看到容器正在运行。

2. 检查日志

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. 测试视频同步功能

🔄 更新部署

更新镜像并重启

# 1. 拉取最新镜像
docker-compose pull

# 2. 重启服务(会使用新镜像)
docker-compose up -d

# 3. 查看更新后的日志
docker-compose logs -f

重新构建并部署

# 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. 镜像构建失败

问题:前端构建失败

# 检查 Node.js 版本
node --version  # 应该是 18+

# 清除缓存重新构建
cd app
rm -rf node_modules dist
pnpm install
pnpm build

问题:后端构建失败

# 检查 .NET SDK 版本
dotnet --version  # 应该是 6.0.x

# 清除构建缓存
dotnet clean
dotnet restore

2. 容器启动失败

问题:端口被占用

# 检查端口占用
lsof -i :10101  # Linux/macOS
netstat -ano | findstr :10101  # Windows

# 修改 docker-compose.yml 中的端口映射
ports:
  - "10102:10101"  # 使用其他端口

问题:权限错误

# 确保目录有写权限
chmod -R 755 db collect favorite uper logs

# 或者使用 sudo(不推荐)
sudo docker-compose up -d

3. 数据丢失问题

问题:容器删除后数据丢失

  • 确保 volumes 配置正确
  • 使用绝对路径而不是相对路径
  • 定期备份 db 目录

4. 网络问题

问题:无法访问外网

  • 检查 DNS 配置
  • 检查防火墙设置
  • 使用 network_mode: bridge 或 host

5. 镜像拉取失败

问题:认证失败

# 重新登录
docker logout registry.cn-hangzhou.aliyuncs.com
docker login registry.cn-hangzhou.aliyuncs.com

问题:网络超时

# 使用国内镜像加速器
# 在 /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. 更新镜像:定期更新镜像以获取安全补丁

📚 相关文档


最后更新:2024-11-22
版本:v1.0