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

252 lines
6.7 KiB
Markdown
Raw 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.
# 飞牛 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 命令缺少项目文件
**修复**:
```dockerfile
RUN dotnet restore dy.net.csproj
RUN dotnet publish dy.net.csproj -c Release -o /app/publish
```
#### 问题:npm/pnpm 网络超时
**修复**:添加国内镜像源配置
```dockerfile
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 中添加删除步骤:
```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`
---
## 📝 部署命令总结
### 完整部署流程
```bash
# 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` |
---
## 🛠️ 常用管理命令
### 查看服务状态
```bash
sudo docker ps | grep dysync
sudo docker logs dysync
```
### 重启服务
```bash
sudo docker restart dysync
# 或
sudo docker compose -f docker-compose.feiniu.vol2.yml restart
```
### 停止服务
```bash
sudo docker stop dysync
# 或
sudo docker compose -f docker-compose.feiniu.vol2.yml down
```
### 更新部署(本地修改后)
#### 完整更新流程
**本地操作**:
```bash
# 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 操作**:
```bash
# 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)
```bash
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`
---
## 📚 相关文档
- **[飞牛NAS部署完整指南.md](./飞牛NAS部署完整指南.md)** - 最新、最完整的部署文档
- [本地启动指南](./本地启动指南.md) - 本地开发环境配置
- [网络问题解决方案](./网络问题解决方案.md) - 网络相关问题
- [构建问题排查](./构建问题排查.md) - 构建相关问题
---
## ✨ 部署成功标志
- ✅ 镜像构建成功:`dysync.net:latest` (268MB)
- ✅ 容器运行正常:`dysync` 容器状态为 `Up`
- ✅ 服务可访问:`http://192.168.1.99:10101` 可正常访问
- ✅ 日志正常:容器日志显示服务已启动并监听端口
---
**部署日期**:2024-12-17
**部署人员**:adminym
**NAS 系统**:飞牛 NAS
**Docker 版本**:28.5.2