ad97fd3da5
- .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>
6.7 KiB
6.7 KiB
飞牛 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 资源分叉文件导致编译错误
修复:
- 在
.dockerignore中添加._* - 在 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
📚 相关文档
- 飞牛NAS部署完整指南.md - 最新、最完整的部署文档
- 本地启动指南 - 本地开发环境配置
- 网络问题解决方案 - 网络相关问题
- 构建问题排查 - 构建相关问题
✨ 部署成功标志
- ✅ 镜像构建成功:
dysync.net:latest(268MB) - ✅ 容器运行正常:
dysync容器状态为Up - ✅ 服务可访问:
http://192.168.1.99:10101可正常访问 - ✅ 日志正常:容器日志显示服务已启动并监听端口
部署日期:2024-12-17
部署人员:adminym
NAS 系统:飞牛 NAS
Docker 版本:28.5.2