Appearance
DevOps服务堆栈架构总览
目标: 将本地
source/lab的代码部署到服务器/srv目录,并按顺序启动所有 Docker 服务。 前置条件: 已完成 目录初始化 和 Docker 安装。
1. 代码同步 (Local -> Server)
你需要将本地开发好的代码 (docker-compose.yml, 配置文件, 源代码) 上传到服务器。
方式 A: 使用 Git (推荐)
如果你的代码在 GitHub/Gitee 上:
bash
# 在服务器上
cd /srv/app
git clone https://github.com/yourname/neat-project.git neat方式 B: 使用 SCP/Rsync (直接上传)
如果代码在本地 c:\Users\hongj\source\lab:
在 Windows 本地 PowerShell 执行:
powershell
# 假设服务器 IP 为 192.168.1.100,用户为 allen
# 1. 上传 Neat 项目
scp -r c:\Users\hongj\source\lab\neat-project\ allen@192.168.1.100:/srv/app/neat
# 2. 上传 Docker Compose 配置 (假设你整理在 config 目录)
scp -r c:\Users\hongj\source\lab\deploy\core\ allen@192.168.1.100:/srv/core/
scp -r c:\Users\hongj\source\lab\deploy\hub\ allen@192.168.1.100:/srv/hub/2. Docker 网络初始化
所有服务需要互通,我们创建一个统一的桥接网络 hub_net。
bash
# 在服务器执行
docker network create hub_net3. 分层启动服务 (Deployment Sequence)
按照依赖关系,依次启动:Core (网关) -> Monitor (监控) -> Hub (存储) -> App (业务)。
步骤 1: 启动基础设施 (Core)
包含 Nginx Proxy, FRP Client, Portainer。
bash
cd /srv/core
# 检查配置
ls -l
# 启动
docker compose up -d
# 验证
docker compose logs -f nginx确保 Nginx 没有报错,且 80/443 端口已监听。
步骤 2: 启动监控 (Monitor)
包含 Prometheus, Grafana, Node-Exporter。
bash
cd /srv/monitor
docker compose up -d步骤 3: 启动 Hub 服务 (Hub)
包含 Nextcloud, Jellyfin, PhotoPrism。
bash
cd /srv/hub
# 拉取最新镜像 (网盘和媒体中心镜像较大,耐心等待)
docker compose pull
# 启动
docker compose up -d步骤 4: 启动业务应用 (App)
包含 Neat Project, Ark Backend, Postgres/MySQL。
bash
cd /srv/app/neat
# 1. 确保数据库目录权限
mkdir -p ./data/db
# 2. 启动
docker compose up -d
# 3. 检查数据库初始化日志
docker compose logs -f db4. 验证与排查
4.1 检查容器状态
bash
docker ps -a --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"- 正常: Status 显示
Up x hours。 - 异常: Status 显示
Exited或Restarting。
4.2 检查端口映射
hub-nginx: 0.0.0.0:80->80, 0.0.0.0:443->443portainer: 127.0.0.1:9000->9000 (安全起见建议只监听内网或通过 Nginx 转发)
4.3 浏览器访问
- 访问
http://你的服务器IP-> 应该看到 Nginx 默认页或你配置的首页。 - 访问
http://你的服务器IP:8081(如果暴露了) -> Nextcloud。
5. 常用维护命令
bash
# 更新所有服务镜像
docker compose pull && docker compose up -d
# 查看某服务日志 (如 neat)
cd /srv/app/neat
docker compose logs --tail=100 -f app
# 重启 Nginx (修改配置后)
docker exec -it hub-nginx nginx -s reload