温馨提示×

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

小樊
69
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