You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何用Docker Compose搭建Python 3.11版本的Airflow容器?

Airflow容器Python版本升级失败问题解决

我在WSL Ubuntu环境中使用2.6.3版本的docker-compose.yml部署了Airflow,计划用它调度运行基于Python 3.10开发、依赖最新版numpy的程序。但Airflow容器默认使用Python 3.7.17,无法适配我的程序。已知Airflow 2.6.3支持Python 3.11,于是尝试通过Dockerfile构建容器安装Python 3.10,但构建完成后容器仍保留Python 3.7.17,问题未解决。希望通过解决该问题学习相关知识,以下是我的Dockerfile:

FROM apache/airflow:2.6.3

USER root

RUN python -m pip install --upgrade pip

RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        build-essential \
        libssl-dev \
        zlib1g-dev \
        libbz2-dev \
        libreadline-dev \
        libsqlite3-dev \
        wget \
        curl \
        llvm \
        libncurses5-dev \
        libncursesw5-dev \
        xz-utils \
        tk-dev \
        libffi-dev \
        liblzma-dev \
        python3-openssl \
        git \
    && curl -L https://www.python.org/ftp/python/3.10.0/Python-3.10.0.tgz -o python.tgz \
    && tar xvf python.tgz \
    && cd Python-3.10.0 \
    && ./configure --enable-optimizations \
    && make altinstall \
    && apt-get clean && rm -rf /var/lib/apt/lists/*


RUN sudo update-alternatives --install /usr/bin/python python /usr/local/bin/python3.10 1
RUN python --version
USER airflow
RUN pip --version

COPY requirements.txt ./

问题原因

  1. 仅替换了python命令指向,但Airflow内部依赖python3命令,原容器中python3仍指向3.7版本
  2. Airflow核心依赖基于Python 3.7编译安装,单纯替换系统Python版本无法自动适配这些依赖
  3. update-alternatives配置未正确覆盖原有Python优先级,且构建阶段的python --version仅在镜像构建时执行,容器运行时环境可能未生效

解决方案

推荐方案:使用官方Python 3.10镜像

Airflow官方提供了对应不同Python版本的预构建镜像,格式为apache/airflow:<airflow-version>-python<python-version>。直接使用该镜像无需手动编译Python,且能保证Airflow依赖与Python版本兼容。

修改后的Dockerfile:

FROM apache/airflow:2.6.3-python3.10

USER airflow

COPY requirements.txt ./
# 安装程序依赖
RUN pip install --no-cache-dir -r requirements.txt

手动编译替换方案(不推荐)

若坚持手动编译,需完全替换Airflow使用的Python路径并重新安装依赖:

  1. 替换python3和pip的系统默认指向:
# 高优先级替换python3命令指向3.10
RUN update-alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.10 100
# 替换pip命令指向3.10的pip
RUN update-alternatives --install /usr/bin/pip pip /usr/local/bin/pip3.10 100
  1. 重新安装Airflow核心依赖,适配Python 3.10:
RUN pip install apache-airflow==2.6.3 --no-cache-dir
  1. 注意:该方法可能引发Airflow组件兼容性问题,官方不推荐此操作

验证步骤

构建镜像后,进入容器执行以下命令确认版本:

python --version
python3 --version
pip --version

内容的提问来源于stack exchange,提问作者Gs.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 23:42:18