整理仓库:扩展 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>
This commit is contained in:
yuming
2026-04-24 21:28:41 +08:00
parent af40ed69fc
commit ad97fd3da5
18 changed files with 3811 additions and 21 deletions
+251
View File
@@ -0,0 +1,251 @@
# 飞牛 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