一、Jenkins 和 Docker
Jenkins 是一款开源软件,用于实现持续集成和持续交付。Docker 是一种容器化技术,可将应用打包为可移植的容器。Jenkins 和 Docker 是两个不同的软件,但它们可以很好地结合使用,实现自动化部署构建。
要使用 Jenkins Docker 自动化部署构建,首先需要安装 Jenkins 和 Docker。可以按照以下步骤进行安装:
# 安装 Jenkins sudo apt update sudo apt install default-jre wget -q -O - https://pkg.jenkins.io/debian-stable/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 update sudo apt install jenkins # 启动 Jenkins sudo systemctl start jenkins # 安装 Docker sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io # 启动 Docker sudo systemctl start docker
二、使用 Jenkins 和 Docker 构建和部署应用
在安装好 Jenkins 和 Docker 后,我们可以用它们来构建和部署应用。下面是一个示例应用的构建和部署流程:
- Jenkins 从代码库中拉取最新的代码
- Jenkins 使用 Dockerfile 构建 Docker 容器镜像
- Jenkins 将镜像推送到 Docker Hub
- Jenkins 在目标服务器上启动 Docker 容器
要实现这个流程,我们需要在 Jenkins 中配置以下内容:
- 创建一个 Jenkins 项目
- 配置 Jenkins 构建过程,包括从代码库拉取代码、构建 Docker 镜像、推送镜像到 Docker Hub、启动 Docker 容器
- 配置 Jenkins 的 Docker 插件,用于和 Docker 交互
- 在目标服务器上安装 Docker,用于接收 Jenkins 推送的镜像并启动容器
下面是一个具体的代码示例,用于演示如何在 Jenkins 中实现自动化部署构建:
pipeline { agent any stages { stage('Build') { steps { script { git 'https://github.com/username/repo.git' docker.build('my-image:1.0.0 .') docker.withRegistry('https://registry.hub.docker.com', 'docker-hub-credentials') { docker.push('my-image:1.0.0') } } } } stage('Deploy') { steps { script { sshagent(['ssh-key']) { sh ''' ssh user@host "docker stop my-container || true && docker rm my-container || true" ssh user@host "docker pull my-image:1.0.0" ssh user@host "docker run -d --name my-container my-image:1.0.0" ''' } } } } } }
三、优点和应用场景
Jenkins Docker 自动化部署构建有以下优点:
- 快速:Docker 容器镜像可以快速部署,应用可以在几分钟内上线
- 简便:自动化部署构建流程可以免去手动部署的繁琐过程,提高效率
- 可靠:Docker 环境可以确保在不同的计算机上具有相同的运行环境,降低构建和部署的风险
Jenkins Docker 自动化部署构建适用于以下应用场景:
- 需要频繁部署更新的 Web 应用
- 需要部署到多台服务器的应用
- 需要确保环境一致性的应用