Files
dysync/docs/飞牛NAS部署总结.md
T
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

6.7 KiB
Raw Blame History

飞牛 NAS 部署总结

✅ 部署成功总结

本次部署成功将 dysync.net 项目部署到飞牛 NAS,以下是完整的部署过程和关键要点。


📋 部署流程概览

1. 环境准备 ✅

  • NAS 路径:/vol2/1000/docker/dysync
  • NAS IP:192.168.1.99
  • SSH 用户:adminym
  • Docker:已安装并运行

2. 文件上传 ✅

  • 使用 tar 压缩项目文件(排除不必要的文件)
  • 通过 scp 上传到 NAS
  • 在 NAS 上解压到 dysync.net 目录

3. Docker 镜像构建 ✅

  • 基础镜像:node:18-alpine、.NET SDK 6.0、.NET ASP.NET 6.0
  • 构建时间:约 50 秒(使用缓存)
  • 镜像大小:268MB
  • 镜像名称:dysync.net:latest

4. 容器部署 ✅

  • 容器名称:dysync
  • 端口映射:10101:10101
  • 数据目录挂载:db、collect、favorite、uper、logs
  • 状态:运行中

🔧 关键配置和修复

1. Dockerfile 修复

问题:dotnet 命令缺少项目文件

修复:

RUN dotnet restore dy.net.csproj
RUN dotnet publish dy.net.csproj -c Release -o /app/publish

问题:npm/pnpm 网络超时

修复:添加国内镜像源配置

RUN npm config set registry https://registry.npmmirror.com && \
    npm install -g pnpm && \
    pnpm config set registry https://registry.npmmirror.com && \
    ...

问题:macOS 资源分叉文件导致编译错误

修复:

  1. 在 .dockerignore 中添加 ._*
  2. 在 Dockerfile 中添加删除步骤:
RUN find . -name "._*" -type f -delete

2. docker-compose 配置

文件:docker-compose.feiniu.vol2.yml

关键配置:

  • 镜像:dysync.net:latest(本地构建)
  • 数据目录:/vol2/1000/docker/dysync/{db,collect,favorite,uper,logs}
  • DNS 配置:8.8.8.8、114.114.114.114、223.5.5.5
  • 环境变量:TZ=Asia/Shanghai、ASPNETCORE_ENVIRONMENT=Production

📝 部署命令总结

完整部署流程

# 1. 本地压缩项目
cd /Users/gaotu/WebstormProjects/dysync.net
tar -czf ../dysync.net.tar.gz \
  --exclude='.git' --exclude='node_modules' --exclude='app/node_modules' \
  --exclude='bin' --exclude='obj' --exclude='.vs' --exclude='.idea' \
  --exclude='videos' --exclude='*.md' --exclude='docs' --exclude='*.tar.gz' .

# 2. 上传到 NAS
scp ../dysync.net.tar.gz adminym@192.168.1.99:/vol2/1000/docker/dysync/

# 3. SSH 连接到 NAS
ssh adminym@192.168.1.99

# 4. 解压文件
cd /vol2/1000/docker/dysync
mkdir -p dysync.net
tar -xzf dysync.net.tar.gz -C dysync.net/

# 5. 拉取基础镜像
sudo docker pull node:18-alpine
sudo docker pull mcr.microsoft.com/dotnet/sdk:6.0
sudo docker pull mcr.microsoft.com/dotnet/aspnet:6.0

# 6. 修复 Dockerfile(如需要)
cd dysync.net
sudo sed -i 's/RUN dotnet restore/RUN dotnet restore dy.net.csproj/' Dockerfile.prod
sudo sed -i 's/RUN dotnet publish -c Release -o \/app\/publish/RUN dotnet publish dy.net.csproj -c Release -o \/app\/publish/' Dockerfile.prod
echo "._*" >> .dockerignore

# 7. 构建镜像
sudo docker build -f Dockerfile.prod -t dysync.net:latest .

# 8. 创建数据目录
sudo mkdir -p /vol2/1000/docker/dysync/{db,collect,favorite,uper,logs}
sudo chmod -R 755 /vol2/1000/docker/dysync

# 9. 启动容器
sudo docker compose -f docker-compose.feiniu.vol2.yml up -d

# 10. 验证服务
sudo docker ps | grep dysync
sudo docker logs dysync

🎯 关键路径和端口

项目 值
项目路径 /vol2/1000/docker/dysync
数据目录 /vol2/1000/docker/dysync/{db,collect,favorite,uper,logs}
服务端口 10101
访问地址 http://192.168.1.99:10101
容器名称 dysync
镜像名称 dysync.net:latest

🛠️ 常用管理命令

查看服务状态

sudo docker ps | grep dysync
sudo docker logs dysync

重启服务

sudo docker restart dysync
# 或
sudo docker compose -f docker-compose.feiniu.vol2.yml restart

停止服务

sudo docker stop dysync
# 或
sudo docker compose -f docker-compose.feiniu.vol2.yml down

更新部署(本地修改后)

完整更新流程

本地操作:

# 1. 压缩项目
cd /Users/gaotu/WebstormProjects/dysync.net
tar -czf ../dysync.net.tar.gz \
  --exclude='.git' --exclude='node_modules' --exclude='app/node_modules' \
  --exclude='bin' --exclude='obj' --exclude='.vs' --exclude='.idea' \
  --exclude='videos' --exclude='*.md' --exclude='docs' --exclude='*.tar.gz' .

# 2. 上传到 NAS
scp ../dysync.net.tar.gz adminym@192.168.1.99:/vol2/1000/docker/dysync/

NAS 操作:

# 1. SSH 连接
ssh adminym@192.168.1.99

# 2. 更新文件
cd /vol2/1000/docker/dysync
mv dysync.net dysync.net.backup.$(date +%Y%m%d_%H%M%S)
mkdir -p dysync.net
tar -xzf dysync.net.tar.gz -C dysync.net/

# 3. 重新部署
cd dysync.net
sudo docker compose -f docker-compose.feiniu.vol2.yml down
sudo docker build -f Dockerfile.prod -t dysync.net:latest .
sudo docker compose -f docker-compose.feiniu.vol2.yml up -d

# 4. 验证
sudo docker ps | grep dysync
sudo docker logs --tail 50 dysync

快速更新(如果文件已在 NAS)

cd /vol2/1000/docker/dysync/dysync.net
sudo docker compose -f docker-compose.feiniu.vol2.yml down
sudo docker build -f Dockerfile.prod -t dysync.net:latest .
sudo docker compose -f docker-compose.feiniu.vol2.yml up -d

⚠️ 常见问题和解决方案

1. 网络超时问题

  • 原因:npm/pnpm 从官方源下载包超时
  • 解决:在 Dockerfile 中配置国内镜像源

2. macOS 资源分叉文件问题

  • 原因:macOS 创建的 ._* 文件被包含在构建中
  • 解决:在 .dockerignore 中排除,并在 Dockerfile 中删除

3. dotnet 命令缺少项目文件

  • 原因:Dockerfile 中 dotnet restore 和 dotnet publish 未指定项目文件
  • 解决:添加项目文件参数 dy.net.csproj

📚 相关文档


✨ 部署成功标志

  • ✅ 镜像构建成功:dysync.net:latest (268MB)
  • ✅ 容器运行正常:dysync 容器状态为 Up
  • ✅ 服务可访问:http://192.168.1.99:10101 可正常访问
  • ✅ 日志正常:容器日志显示服务已启动并监听端口

部署日期:2024-12-17
部署人员:adminym
NAS 系统:飞牛 NAS
Docker 版本:28.5.2