当前位置: 代码网 > 服务器>服务器>云虚拟主机 > Docker集成CI/CD的项目实践

Docker集成CI/CD的项目实践

2025年02月14日 云虚拟主机 我要评论
一、引言1.1 什么是 ci/cd?ci(continuous integration):持续集成,通过自动化工具频繁将代码集成到主分支,并执行自动化构建和测试。cd(continuous deplo

一、引言

1.1 什么是 ci/cd?

  • ci(continuous integration):持续集成,通过自动化工具频繁将代码集成到主分支,并执行自动化构建和测试。
  • cd(continuous deployment / delivery):持续部署/交付,代码通过测试后自动部署到生产或测试环境。

1.2 docker 在 ci/cd 中的作用

docker 在 ci/cd 流程中扮演着关键角色,解决了传统开发流程中的环境不一致问题,具有以下优势:

  • 一致性:通过容器保证开发、测试和生产环境一致。
  • 快速部署:轻量化容器使应用部署速度大幅提升。
  • 灵活性:易于与 ci/cd 工具(如 jenkins、gitlab ci)集成。
  • 隔离性:不同服务可以在独立的容器中运行,互不影响。

二、docker 在 ci/cd 中的应用场景

2.1 开发与测试环境的标准化

  • 使用 docker 容器快速创建一致的开发与测试环境,避免 “开发能跑,测试失败” 的问题。

2.2 自动化构建与测试

  • 利用 ci/cd 工具自动构建应用的 docker 镜像,并执行单元测试、集成测试等。

2.3 自动化部署与发布

  • 将 docker 镜像推送到镜像仓库(如 docker hub、harbor),并自动部署到生产环境。

三、docker 与 jenkins 的集成

3.1 安装 jenkins 并配置 docker 环境

  • 安装 docker 确保主机上已安装 docker。

    sudo apt-get update
    sudo apt-get install -y docker.io
  • 安装 jenkins

    • 安装 jenkins 并启动服务。
    sudo apt-get install -y openjdk-11-jdk wget
    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-get update
    sudo apt-get install -y jenkins
    sudo systemctl start jenkins
  • 安装 docker 插件

    • 在 jenkins 管理页面中安装 docker pipeline 插件。
  • 配置 jenkins 用户权限

    • 添加 jenkins 用户到 docker 组,确保 jenkins 能够执行 docker 命令:
    sudo usermod -ag docker jenkins
    sudo systemctl restart jenkins

3.2 编写 jenkins pipeline

使用 jenkins pipeline 构建和部署 docker 镜像。

示例 jenkinsfile

pipeline {
    agent any
    environment {
        docker_image = 'myapp:latest'
        docker_registry = 'dockerhub_username'
    }
    stages {
        stage('checkout code') {
            steps {
                echo "checking out code..."
                checkout scm
            }
        }
        stage('build docker image') {
            steps {
                echo "building docker image..."
                sh "docker build -t ${docker_image} ."
            }
        }
        stage('push to docker hub') {
            steps {
                echo "pushing image to docker hub..."
                withcredentials([string(credentialsid: 'dockerhub-pass', variable: 'docker_pass')]) {
                    sh "echo ${docker_pass} | docker login -u ${docker_registry} --password-stdin"
                    sh "docker push ${docker_registry}/${docker_image}"
                }
            }
        }
        stage('deploy to server') {
            steps {
                echo "deploying application..."
                sh "docker run -d --name myapp-container -p 8080:8080 ${docker_image}"
            }
        }
    }
}

3.3 自动触发构建

  • 在 jenkins 项目中配置 webhooks,监听代码仓库的提交事件。
  • 每次代码提交时,自动触发 ci/cd 流程。

四、docker 与 gitlab ci 的集成

4.1 gitlab ci/cd 基础概念

  • gitlab-ci.yml:gitlab ci 的配置文件,定义了流水线(pipeline)中各阶段的任务。

4.2 安装 gitlab runner

  • 安装 gitlab runner:

    sudo apt-get install -y gitlab-runner
  • 注册 runner 并绑定项目:

    sudo gitlab-runner register

4.3 编写 gitlab ci/cd pipeline

使用 gitlab ci 自动化构建和发布 docker 镜像。

示例 .gitlab-ci.yml

stages:
  - build
  - test
  - deploy

variables:
  docker_image: myapp:latest
  docker_registry: dockerhub_username

before_script:
  - docker login -u $docker_registry -p $docker_password

build:
  stage: build
  script:
    - echo "building docker image..."
    - docker build -t $docker_registry/$docker_image .
    - docker push $docker_registry/$docker_image

test:
  stage: test
  script:
    - echo "running tests..."
    - docker run --rm $docker_registry/$docker_image pytest

deploy:
  stage: deploy
  script:
    - echo "deploying application..."
    - docker pull $docker_registry/$docker_image
    - docker run -d --name myapp-container -p 8080:8080 $docker_registry/$docker_image

五、docker 镜像的自动构建与发布

  • 使用自动构建服务

    • 在 docker hub 中设置自动构建仓库,绑定代码仓库(如 github、gitlab)。
  • 触发条件

    • 每次提交代码时,自动触发构建、测试并发布镜像。

六、实践:ci/cd 集成与自动化

6.1 配置 jenkins 与 docker 集成

  • 安装 jenkins 和 docker。
  • 编写 jenkinsfile,实现自动化构建、推送和部署。

6.2 配置 gitlab ci 与 docker 集成

  • 安装 gitlab runner 并绑定项目。
  • 编写 .gitlab-ci.yml 文件,实现 ci/cd 流水线。

6.3 自动化测试与部署

  • 在 ci/cd 流程中集成自动化测试工具,如 pytest、jest 等。
  • 完成镜像推送后,自动部署到生产服务器。

总结

通过将 docker 与 ci/cd 工具(jenkins、gitlab ci)集成,可以实现代码的自动构建、测试和部署,极大提升开发效率与部署速度。掌握这些技术并结合实际场景进行优化,是现代开发团队不可或缺的技能。

到此这篇关于docker集成ci/cd的项目实践的文章就介绍到这了,更多相关docker集成ci/cd内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com