debian

Debian Docker如何进行持续集成与部署

小樊
52
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监听镜像仓库更新。

四、监控与回滚

关键工具与优势

通过以上步骤,可实现Debian环境下基于Docker的自动化CI/CD流程,提升开发与部署效率。

0
看了该问题的人还看了