docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > dockerExecute 函数和docker.build

dockerExecute 函数和docker.build的区别解析

作者:Rhys..

dockerExecute 通常是一个自定义的函数或者由特定的 Jenkins 库(如 piper-lib)提供,用于在 Docker 容器中执行特定的命令,这篇文章主要介绍了dockerExecute 函数和docker.build的区别,需要的朋友可以参考下

一、dockerExecute介绍

dockerExecute 通常是一个自定义的函数或者由特定的 Jenkins 库(如 piper-lib)提供,用于在 Docker 容器中执行特定的命令。这类函数可以帮助在构建或测试阶段管理 Docker 容器的生命周期,确保步骤在容器内运行。它的作用是启动一个 Docker 容器,并在该容器中执行提供的命令.

1、使用场景:

2、dockerexecute方法的使用介绍

因为我的测试背景正好是 公司内部的 Docker 镜像存储库中的有一个现成的专用于测试的镜像;所以我直接在这个pipline脚本中去运用了这个方法,给大家看个例子顺便讲解一下:

stage('test') {
    node {
        dockerExecute(script: this,
        dockerImage: "your-docker-image",
        dockerName: 'your-docker-name'{
// 在 Docker 容器内部执行以下命令
                    sh '''
                        //例如安装依赖,设置环境变量,执行关键脚本等等
                        python main.py
                        '''
}

3、dockerExecute 接受的参数解释:

作用总结

二、docker.build介绍

docker.build 是 Jenkins 的 Docker 插件提供的一个方法,用于构建 Docker 镜像。它会读取当前目录下的 Dockerfile 并构建一个新的 Docker 镜像,有助于将你的应用和所有的依赖封装到一个标准的镜像中。

1、使用场景:

2、结合使用

3、定义场景

(1)dockerfile示例:

# 使用已有基础镜像
FROM your-docker-image
# 设置工作目录
WORKDIR /web-test
# 安装系统依赖包括 chromedriver 和 google-chrome
RUN apt-get update && apt-get install -y \
    xvfb \
    x11-utils \
    libgl1-mesa-glx \
    wget \
    unzip \
    curl \
    gnupg \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*
# 安装 chromedriver
RUN wget -O /tmp/chromedriver.zip https://chromedriver.storage.googleapis.com/113.0.5672.63/chromedriver_linux64.zip \
    && unzip /tmp/chromedriver.zip -d /usr/local/bin/ \
    && rm /tmp/chromedriver.zip
# 下载并安装 google-chrome
RUN wget -O /tmp/google-chrome.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb \
    && apt-get update && apt-get install -y --no-install-recommends /tmp/google-chrome.deb \
    && rm /tmp/google-chrome.deb
# 将 requirements.txt 复制到工作目录
COPY requirements.txt .
# 安装 Python 依赖
RUN pip install --no-cache-dir -r requirements.txt
# 将项目文件复制到工作目录
COPY . .
# 设置环境变量
ENV DISPLAY=:99
# 启动 Xvfb 并运行应用
CMD Xvfb :99 -screen 0 1920x1080x24 & python PANA/GenerateReport.py

(2)Jenkinsfile示例:

@Library(["piper-lib", "piper-lib-os"]) _
pipeline {
    agent any
    stages {
        stage('checkout') {
            steps {
                checkout scm
            }
        }
        stage('build-image') {
            steps {
                script {
                    // 使用当前目录下的 Dockerfile 构建新的 Docker 镜像
                    docker.build('my-repo/my-python-app:latest', '-f Dockerfile .')
                }
            }
        }
        stage('test') {
            steps {
                script {
                    dockerExecute(script: this,
                    dockerImage: "my-repo/my-python-app:latest",
                    dockerName: 'python') {
                        sh '''
                            set -e
                            # 设置 DISPLAY 环境变量
                            export DISPLAY=:99
                            # 启动 Xvfb 并在后台运行
                            Xvfb :99 -screen 0 1920x1080x24 &
                            # 等待 Xvfb 完全启动
                            sleep 5
                            # 打印 Python 版本信息
                            python --version
                            # 升级 pip
                            python -m pip install --upgrade pip
                            # 切换到工作目录
                            cd $WORKSPACE
                            # 安装 Python 依赖
                            python -m pip install -r requirements.txt
                            # 运行 Python 脚本
                            python PANA/GenerateReport.py
                            # 可选:确保完成后停止 Xvfb
                            killall Xvfb
                        '''
                    }
                }
            }
        }
    }
    post {
        always {
            echo 'Cleaning up...'
            // 放置任何清理步骤
        }
        success {
            echo 'Pipeline succeeded'
        }
        failure {
            echo 'Pipeline failed'
        }
    }
}

三、关键区别

1、构建与运行

2、具体用途

到此这篇关于dockerExecute 函数和docker.build的区别的文章就介绍到这了,更多相关dockerExecute 函数和docker.build内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文