You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何无需GitLab Runner,通过gitlab-ci.yml在远程服务器自动部署?

无需GitLab Runner实现Docker-Compose自动部署方案

核心思路

直接借助GitLab CI的SSH远程执行能力,在流水线中建立与目标Ubuntu服务器的无密码SSH连接,拉取最新代码并执行docker-compose命令完成部署,无需在服务器上部署GitLab Runner。

具体步骤

1. 目标Ubuntu服务器配置SSH免密访问

  • 生成SSH密钥对(无则创建):
    ssh-keygen -t ed25519 -C "gitlab-ci-deploy"
    
    全程回车默认生成私钥~/.ssh/id_ed25519和公钥~/.ssh/id_ed25519.pub。
  • 将公钥添加到服务器授权列表,确保无密码登录权限:
    cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    chmod 700 ~/.ssh
    
  • 测试本地(或任意环境)能否无密码登录服务器:
    ssh -i ~/.ssh/id_ed25519 你的服务器用户名@你的服务器IP
    

2. GitLab项目配置CI/CD安全变量

进入GitLab项目的Settings > CI/CD > Variables,添加以下变量(勾选「Protect variable」和「Mask variable」保障安全):

  • SSH_PRIVATE_KEY:填入上述生成的SSH私钥完整内容(即~/.ssh/id_ed25519文件内的文本)
  • SERVER_IP:目标Ubuntu服务器的IP地址
  • SERVER_USER:服务器上用于登录的用户名
  • PROJECT_PATH:项目在服务器上的存放路径(例如/opt/your-project)

3. 编写.gitlab-ci.yml部署脚本

在项目根目录创建该文件,内容如下:

stages:
  - deploy

deploy:
  stage: deploy
  image: alpine:latest
  before_script:
    # 安装SSH、Git、Docker-Compose依赖
    - apk add --no-cache openssh-client git docker-compose
    # 配置SSH免密登录环境
    - mkdir -p ~/.ssh
    - echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_ed25519
    - chmod 600 ~/.ssh/id_ed25519
    - ssh-keyscan -H $SERVER_IP >> ~/.ssh/known_hosts
  script:
    # 远程执行部署命令:拉取代码、重启服务
    - ssh $SERVER_USER@$SERVER_IP "
        if [ ! -d $PROJECT_PATH ]; then
          git clone git@gitlab.com:你的用户名/你的项目名.git $PROJECT_PATH;
        else
          cd $PROJECT_PATH && git pull origin main;
        fi &&
        cd $PROJECT_PATH && docker-compose down && docker-compose up -d --build
      "
  only:
    - main # 仅在main分支推送代码时触发部署

4. 验证部署流程

  • 将代码推送到GitLab的main分支
  • 进入GitLab项目的CI/CD > Pipelines查看作业执行状态
  • 登录服务器检查容器运行状态:
    docker-compose ps -a
    

注意事项

  • 确保目标服务器已预先安装git、docker和docker-compose
  • 若项目为私有仓库,需在服务器上配置Git SSH密钥,或改用HTTPS拉取(需配置Git凭证)
  • 生产环境建议限制该SSH用户的命令执行权限,仅允许部署相关操作
  • 可在部署脚本中添加数据库备份步骤,避免数据丢失

内容的提问来源于stack exchange,提问作者nikolardlvc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 10:40:25