Docker 容器日志不好查?试试用 Jenkins Pipeline 自动化查看

IT疑难杂症诊疗室 10w+人浏览 786人参与

摘要

本文案例适用于已经搭建了jenkins系统,应用服务为docker容器化部署并且没有专门的日志查看系统的场景

页面展示

在这里插入图片描述

实现步骤

添加参数化构建过程
获取容器列表(Groovy Script)
def dockerOutput = "docker ps --format {{.Names}}".execute().text
def podList = dockerOutput.readLines().findAll { it.trim() != "" }
podList = podList.collect { 
    it.replaceAll(/['"]/, "") 
      .trim() 
}
podList = podList.findAll { it != "" }

if (podList.isEmpty()) {
    return ["No running containers found"]
}
return podList

在这里插入图片描述

定义查看日志行数

在这里插入图片描述

编写pipeline
}
pipeline {
    agent { label 'built-in' }
    stages {
        stage('检查容器状态') {
            steps {
                script {
                    echo "🔍 检查容器 ${CONTAINER_NAME} 是否存在..."
                    def containerExists = sh(
                        script: "docker inspect ${CONTAINER_NAME} > /dev/null 2>&1 && echo 'exists' || echo 'not exists'",
                        returnStdout: true
                    ).trim()

                    if (containerExists != 'exists') {
                        error "❌ 容器 ${pONTAINER_NAME} 不存在,请检查名称或ID是否正确"
                    }
                    def containerStatus = sh(
                        script: "docker inspect -f '{{.State.Status}}' ${CONTAINER_NAME}",
                        returnStdout: true
                    ).trim()
                    echo "📊 容器状态: ${containerStatus}"
                }
            }
        }

        stage('查看容器日志') {
            steps {
                script {
                    echo "📝 开始查看容器 ${CONTAINER_NAME} 的日志..."
                    def logCmd = "docker logs ${CONTAINER_NAME}"
                    if (params.LOG_LINES.trim().toLowerCase() != 'all') {
                        logCmd += " --tail ${LOG_LINES}"
                    }
                    echo "💻 执行命令: ${logCmd}"
                    sh logCmd
                }
            }
        }
    }

    post {
        always {
            echo "✅ 日志查看任务完成"
        }
        failure {
            echo "❌ 任务失败,请检查错误信息"
        }
    }
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值