溫馨提示×

Debian Docker如何集成CI/CD

小樊
45
2025-08-12 02:46:00
欄目: 智能運維

在Debian上集成Docker與CI/CD,可參考以下步驟,以Jenkins和GitLab CI為例:

一、基礎環境準備

  1. 安裝Docker

    sudo apt update && sudo apt install docker.io
    sudo systemctl enable --now docker
    
  2. 安裝CI/CD工具

    • Jenkins
      wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
      sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
      sudo apt install jenkins openjdk-11-jdk
      sudo systemctl start jenkins
      
    • GitLab CI
      通過Docker運行GitLab Runner:
      docker run -d --name gitlab-runner --restart always \
        -v /srv/gitlab-runner/config:/etc/gitlab-runner \
        -v /var/run/docker.sock:/var/run/docker.sock \
        gitlab/gitlab-runner:latest
      

二、配置CI/CD流水線

方案1:Jenkins + Docker

  1. 創建Jenkins Pipeline
    • 在項目根目錄添加Jenkinsfile
      pipeline {
          agent any
          environment {
              DOCKER_IMAGE = "my-app:${env.BUILD_NUMBER}"
              DOCKER_REGISTRY = "docker.io"
              DOCKER_CREDENTIALS = credentials('docker-hub-credentials')
          }
          stages {
              stage('Build') {
                  steps {
                      sh 'docker build -t $DOCKER_IMAGE .'
                  }
              }
              stage('Test') {
                  steps {
                      sh 'docker run $DOCKER_IMAGE npm test' // 示例測試命令
                  }
              }
              stage('Push') {
                  steps {
                      docker.withRegistry("https://$DOCKER_REGISTRY", DOCKER_CREDENTIALS) {
                          sh "docker push $DOCKER_IMAGE"
                      }
                  }
              }
              stage('Deploy') {
                  steps {
                      sh 'ssh user@server "docker pull $DOCKER_IMAGE && docker-compose up -d"'
                  }
              }
          }
      }
      
  2. 配置Jenkins插件
    安裝Docker Pipeline、Git、SSH插件,用于拉取代碼、構建鏡像及遠程部署。

方案2:GitLab CI/CD

  1. 定義.gitlab-ci.yml
    stages:
      - build
      - test
      - deploy
    build:
      stage: build
      script:
        - docker build -t my-app:$CI_COMMIT_SHORT_SHA .
        - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
        - docker push my-app:$CI_COMMIT_SHORT_SHA
    test:
      stage: test
      script:
        - docker run my-app:$CI_COMMIT_SHORT_SHA npm test
    deploy:
      stage: deploy
      script:
        - ssh user@server "docker pull my-app:$CI_COMMIT_SHORT_SHA && docker-compose up -d"
      only:
        - main
    

三、關鍵操作說明

  1. Docker鏡像構建與推送

    • 通過docker.build(Jenkins)或docker build(GitLab)命令構建鏡像,標簽使用構建編號或Git提交哈希。
    • 使用docker logindocker push將鏡像推送到Docker Hub或私有倉庫。
  2. 自動化部署

    • 通過SSH連接到生產服務器,執行docker pulldocker-compose up -d實現滾動更新。
    • 可結合Kubernetes(需額外配置)實現更復雜的容器編排。
  3. 安全增強

    • 集成鏡像掃描工具(如Trivy)檢測漏洞:
      trivy image my-app:$CI_COMMIT_SHORT_SHA
      
    • 使用.dockerignore排除敏感文件,避免構建冗余內容。

四、觸發方式

  • 手動觸發:在Jenkins/GitLab界面手動啟動Pipeline。
  • 自動觸發:通過Git倉庫Webhook(如GitHub的push事件)自動觸發構建。

五、擴展建議

  • 多階段構建:優化Dockerfile,減少最終鏡像大?。ㄈ绶蛛A段構建)。
  • 日志與監控:集成Prometheus+Grafana監控容器狀態,或使用ELK收集日志。

以上步驟可根據具體項目需求調整,優先選擇與團隊現有技術棧兼容的工具鏈。

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