在Linux中,Jenkins与Docker的集成可以通过以下步骤实现:
安装Jenkins:
sudo apt update
sudo apt install -y jenkins
sudo systemctl start jenkins
sudo systemctl enable jenkins
安装Docker:
sudo apt update
sudo apt install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker
配置Docker用户组:
sudo usermod -aG docker $USER
拉取Jenkins Docker镜像:
docker pull jenkins/jenkins:lts
运行Jenkins容器:
docker run -d --name jenkins \
-p 8080:8080 \
-p 50000:50000 \
-v /path/to/jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkins/jenkins:lts
/path/to/jenkins_home为您的宿主机目录,用于持久化Jenkins数据。访问Jenkins:
http://<服务器IP>:8080,您将看到Jenkins的欢迎页面。解锁Jenkins:
docker logs jenkins
Please use the following password to proceed to installation开头的行,该行提供了解锁密码。安装插件和配置:
配置Docker插件:
安装Docker插件:
配置Docker插件:
编写Jenkinsfile:
Jenkinsfile的文件,内容如下:pipeline {
agent any
environment {
REGISTRY = "registry.mycompany.com"
IMAGE_NAME = "myapp"
IMAGE_TAG = "v1.0.${BUILD_NUMBER}"
}
stages {
stage('Checkout') {
steps {
checkout scm
}
}
stage('Build Docker Image') {
steps {
sh """
docker build -t ${REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG} .
"""
}
}
stage('Push to Registry') {
steps {
withCredentials([usernamePassword(credentialsId: 'docker-registry', usernameVariable: 'USER', passwordVariable: 'PASS')]) {
sh """
echo "$PASS" | docker login ${REGISTRY} -u "$USER" --password-stdin
docker push ${REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}
"""
}
}
}
stage('Deploy') {
steps {
sh """
docker pull ${REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}
docker stop myapp || true
docker rm myapp || true
docker run -d --name myapp -p 8080:8080 ${REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}
"""
}
}
}
}
创建Jenkins任务:
通过以上步骤,您可以在Linux中成功地将Jenkins与Docker集成,实现自动化构建、测试和部署流程。