debian

Debian Docker如何集成CI/CD

小樊
52
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 PipelineGitSSH插件,用于拉取代码、构建镜像及远程部署。

方案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排除敏感文件,避免构建冗余内容。

四、触发方式

五、扩展建议

以上步骤可根据具体项目需求调整,优先选择与团队现有技术栈兼容的工具链。

0
看了该问题的人还看了