Back to skills
extension
Category: Development & EngineeringNo API key required

server-deploy

通过 SSH 将本地项目部署到远程服务器,支持文件上传、Docker Compose 构建启动、健康检查全流程。适用于需要将本地开发项目一键部署到云服务器的场景。

personAuthor: adsin123hubModelScope

服务器部署技能

通过 SSH 连接远程服务器,上传项目文件,使用 Docker Compose 构建并启动服务,最后进行健康检查验证的完整部署工作流。

功能说明

本技能用于将本地项目快速部署到远程服务器,覆盖从环境检查到服务验证的全流程。

核心能力

  • SSH 连接与服务器环境检查
  • SFTP 文件上传(自动排除依赖和数据目录)
  • Docker 国内镜像源配置(加速国内服务器部署)
  • Docker Compose 构建与启动
  • 服务健康检查与功能验证

适用场景

  • 本地开发完成后需要上线部署
  • 需要将项目部署到云服务器
  • 项目使用 Docker / Docker Compose 运行
  • 需要定期同步代码到远程服务器

必要信息

部署前请准备以下信息:

| 信息 | 必填 | 说明 | 示例 | |------|------|------|------| | 服务器 IP | 是 | 远程服务器地址 | 118.31.226.80 | | SSH 端口 | 否 | SSH 端口,默认 22 | 22 | | 用户名 | 是 | SSH 登录用户名 | root | | 密码/密钥 | 是 | 认证方式 | 密码或私钥路径 | | 部署路径 | 是 | 服务器上的项目目录 | /www/wwwroot/my-project |

部署流程

第一步:连接验证

连接服务器并检查运行环境:

# 检查 Docker
docker --version

# 检查 Docker Compose
docker compose version

# 检查磁盘空间
df -h

第二步:Docker 镜像源优化(国内服务器)

首次部署时配置国内镜像源,加速镜像拉取:

mkdir -p /etc/docker
cat > /etc/docker/daemon.json << 'EOF'
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://docker.1ms.run",
    "https://hub.rat.dev"
  ]
}
EOF
systemctl daemon-reload
systemctl restart docker

第三步:文件上传

上传项目文件到服务器,自动排除以下内容:

  • 依赖目录:.venv/node_modules/__pycache__/
  • 版本控制:.git/
  • 环境配置:.env.env.local
  • 数据目录:data/redis_data/logs/
  • 编译产物:dist/build/*.exe

第四步:Docker 部署

使用 Docker Compose 构建并启动服务:

cd /path/to/project
docker compose build
docker compose up -d

第五步:健康检查

验证服务是否正常启动:

# 检查容器状态
docker compose ps

# 查看启动日志
docker compose logs --tail=50

# 调用健康检查接口
curl -s http://127.0.0.1:PORT/healthz

常用运维命令

# 查看实时日志
docker compose logs -f

# 重启服务
docker compose restart

# 停止服务
docker compose down

# 查看状态
docker compose ps

# 更新部署
docker compose build && docker compose up -d

# 进入容器
docker compose exec <service-name> bash

注意事项

  1. 安全第一:不要在日志或公开场合泄露服务器密码、密钥
  2. 数据备份:部署前提醒用户备份重要数据和数据库
  3. 端口检查:部署前确认端口未被占用
  4. 环境变量:不要将 .env 文件上传到服务器,应在服务器独立配置
  5. 权限管理:注意文件权限和目录所有权设置
  6. 回滚方案:保留旧版本镜像,便于快速回滚
  7. Windows 服务器:Windows 服务器使用 PowerShell 远程管理而非 SSH

许可证

MIT License