整理仓库:扩展 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:
@@ -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
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user