基于Python3.9构建自己的Airflow 2.9.3镜像

代码解析

下列代码是一个用于构建 Apache Airflow 2.9.3 Docker 镜像的 Dockerfile,基于 Python 3.9 版本。以下是对每个命令和步骤的详细解释:

  1. 基础镜像选择:

    FROM python:3.9-slim
    

    这行指定 Docker 使用 python:3.9-slim 作为基础镜像。python:3.9-slim 是一个较小体积的镜像,包含了 Python 3.9 的运行环境,适合用作构建更具体应用的基础。

  2. 环境变量设置:

    ENV AIRFLOW_VERSION=2.9.3
    ENV AIRFLOW_HOME=/opt/airflow
    ENV PYTHONUNBUFFERED=1
    ENV PIP_NO_CACHE_DIR=1
    
    • AIRFLOW_VERSION 设置 Airflow 的版本号为 2.9.3。
    • AIRFLOW_HOME 设置 Airflow 的工作目录为 /opt/airflow
    • PYTHONUNBUFFERED 设置为 1 以确保 Python 输出是即时的,并且不会被缓冲。
    • PIP_NO_CACHE_DIR 设置为 1 禁用 pip 缓存,这有助于减小 Docker 镜像的体积。
  3. 安装系统依赖和 Python 包:

    RUN apt-get update && apt-get install -y --no-install-recommends \
        build-essential \
        libssl-dev \
        libsasl2-dev \
        libldap2-dev \
        default-libmysqlclient-dev \
        python3-distutils \
        python3-setuptools \
        && apt-get clean \
        && rm -rf /var/lib/apt/lists/*
    

    这一步使用 apt-get 更新包列表并安装一些必要的系统依赖和 Python 库。这些依赖通常是编译和运行特定 Python 模块(如数据库连接等)所必须的。

  4. 安装 Apache Airflow:

    RUN pip install "apache-airflow==${AIRFLOW_VERSION}" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-3.9.txt"
    

    这里通过 pip 安装指定版本的 Apache Airflow,并使用一个版本约束文件以确保所有依赖

Apache Airflow 2.9.3 中,为了根据不同的标签(labels)分配不同的用户权限,你需要利用其角色和权限系统。这里是一个基本步骤指南: 1. **创建角色**: - 首先,定义一个角色,比如 "Admin" 或者 "DataProcessor",并设置一些默认权限。这通常涉及到访问特定的任务、dag或者操作。 ```python from airflow.models import Role Role( role_name='DataProcessor', permissions=[ {'resource': 'DAG', 'permission': 'read'}, {'resource': 'TaskInstance', 'permission': 'execute'} ] ) ``` 2. **关联标签到角色**: - 在创建任务或dag的时候,你可以为它们添加标签。然后将角色和标签关联起来,这样拥有对应标签的用户就会自动获得相应的权限。 ```python dag = DAG('example_dag', tags=['processing']) dag.roles.append(Role.get_role('DataProcessor')) ``` 3. **配置用户权限**: - 创建用户,并为其关联一个或多个包含所需标签的角色。Airflow允许你在用户模型上直接关联角色,或者在用户级别指定权限。 ```python user = User(username='data_processor_user') user.roles.append(Role.get_role('DataProcessor')) ``` 4. **限制视图**: -Airflow UI中,你可以基于标签过滤和查看只对具有相应标签权限的用户可见的任务和dags。 注意:以上步骤需要通过Airflow的API、Shell命令或者管理后台(web UI)来进行设置。具体的权限配置文件(如`airflow.cfg`或`settings.py`)也需要调整以支持这种动态权限控制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值