溫馨提示×

Debian Docker如何進行持續集成與部署

小樊
62
2025-08-07 23:16:17
欄目: 智能運維

在Debian上使用Docker進行持續集成(CI)與部署(CD),可結合Jenkins、GitLab CI/CD等工具,核心流程如下:

一、環境準備

  1. 安裝Docker
    在Debian服務器上執行以下命令安裝Docker:

    sudo apt update
    sudo apt install -y docker.io
    sudo systemctl start docker && sudo systemctl enable docker
    

    (可選)安裝Docker Compose用于多容器管理:

    sudo apt install -y docker-compose
    
  2. 選擇CI工具

    • Jenkins:需安裝Docker插件(如“Docker Pipeline”),支持自定義構建流程。
    • GitLab CI/CD:與GitLab倉庫集成緊密,通過.gitlab-ci.yml定義流程。

二、配置CI/CD流程

以Jenkins為例:

  1. 創建Jenkinsfile
    在項目根目錄編寫Jenkinsfile,定義構建、測試、部署步驟:

    pipeline {
        agent any
        stages {
            stage('Build') {
                steps {
                    sh 'docker build -t my-app:latest .'  // 構建鏡像
                }
            }
            stage('Test') {
                steps {
                    sh 'docker run my-app:latest pytest'  // 運行測試
                }
            }
            stage('Deploy') {
                steps {
                    withCredentials([usernamePassword(credentialsId: 'docker-hub', usernameVariable: 'DOCKER_USER', passwordVariable: 'DOCKER_PASS')]) {
                        sh 'docker login -u $DOCKER_USER -p $DOCKER_PASS'
                        sh 'docker push my-app:latest'  // 推送鏡像到倉庫
                        sh 'ssh user@server "docker pull my-app:latest && docker-compose up -d"'  // 部署到服務器
                    }
                }
            }
        }
    }
    
  2. 配置Docker憑證
    在Jenkins“憑據”中添加Docker Hub或私有倉庫的用戶名、密碼,用于鏡像推送。

以GitLab CI/CD為例:

  1. 編寫.gitlab-ci.yml
    stages:
      - build
      - test
      - deploy
    build_job:
      stage: build
      script:
        - docker build -t registry.example.com/my-app:latest .
        - docker push registry.example.com/my-app:latest
    deploy_job:
      stage: deploy
      script:
        - ssh user@server "docker pull registry.example.com/my-app:latest && docker-compose up -d"
      only:
        - main  # 僅在main分支觸發
    

三、部署到生產環境

  1. 使用Docker Compose部署
    在服務器上編寫docker-compose.yml,定義服務、網絡等:

    version: '3'
    services:
      app:
        image: my-app:latest
        ports:
          - "80:80"
        volumes:
          - ./data:/app/data
    

    通過docker-compose up -d啟動服務。

  2. 自動化觸發

    • 代碼提交到Git倉庫后,CI工具自動觸發構建流程。
    • 部署階段可通過SSH遠程執行命令,或配置Webhook監聽鏡像倉庫更新。

四、監控與回滾

  • 監控:使用Prometheus+Grafana監控容器運行狀態,或通過Docker自帶命令docker stats查看資源使用情況。
  • 回滾:若部署失敗,可通過Docker重新拉取舊版本鏡像并重啟容器,例如:
    docker pull my-app:v1.0  # 拉取舊版本
    docker-compose down && docker-compose up -d  # 重啟服務
    

關鍵工具與優勢

  • Jenkins:靈活性高,支持多階段構建和復雜部署邏輯。
  • GitLab CI/CD:與Git倉庫深度集成,適合團隊協作。
  • Docker:確保環境一致性,簡化部署流程,支持快速回滾。

通過以上步驟,可實現Debian環境下基于Docker的自動化CI/CD流程,提升開發與部署效率。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女