无法找到适配Python 3.7与pyspark3.1.2的Docker镜像该如何解决
解决方案
方案1:自定义构建符合版本要求的Docker镜像(适配性最优,适合高频测试场景)
直接基于官方基础镜像构建完全匹配版本要求的镜像,构建完成后推到内部镜像仓库即可在CircleCI中直接调用。
参考Dockerfile内容如下:
# 基础镜像选用JDK8,适配pyspark 3.1.2运行要求 FROM openjdk:8-jre-slim # 安装Python 3.7及基础依赖 RUN apt-get update && apt-get install -y --no-install-recommends \ python3.7 \ python3-pip \ python3.7-dev \ && rm -rf /var/lib/apt/lists/* # 配置Python默认版本 RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 1 RUN update-alternatives --set python3 /usr/bin/python3.7 RUN pip3 install --upgrade pip setuptools wheel # 安装指定版本pyspark RUN pip3 install pyspark==3.1.2 # 配置Spark相关环境变量 ENV JAVA_HOME=/usr/local/openjdk-8 ENV PYSPARK_PYTHON=python3.7 ENV PYSPARK_DRIVER_PYTHON=python3.7
构建命令:docker build -t <你的镜像仓库地址>/pyspark-3.1.2-python3.7:latest .
构建完成后推送到私有镜像仓库,CircleCI配置中直接拉取该镜像即可。
方案2:基于CircleCI官方Python镜像运行时安装依赖(无需维护镜像,适合低频测试场景)
如果不想自行维护镜像,可直接在CircleCI的配置文件中,基于官方Python 3.7镜像,运行测试前安装JDK和对应版本的pyspark即可。
参考CircleCI配置片段如下:
version: 2.1 jobs: pyspark-test: docker: - image: cimg/python:3.7 steps: - checkout # 安装JDK8 - run: name: Install JDK 8 command: | sudo apt-get update sudo apt-get install -y openjdk-8-jre echo 'export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64' >> $BASH_ENV source $BASH_ENV # 安装依赖 - run: name: Install dependencies command: pip install pyspark==3.1.2 pytest # 运行测试 - run: name: Run pyspark tests command: pytest tests/
注意事项
- 配置环境时需确保
JAVA_HOME变量正确指向JDK安装路径,避免Spark启动报错 - 如有其他Python依赖,可统一放到requirements.txt文件中批量安装
- 自定义镜像时可提前预装常用测试工具(如pytest、coverage等),进一步减少CI运行耗时
内容的提问来源于stack exchange,提问作者Vivek Katial
相关产品推荐
相关产品推荐

