Airflow:Docker-撰写:"You are running pip as root Please use user to run pip"

Airflow:Docker-Compose:"You are running pip as root Please use user to run pip"

要求:运行本地Airflow使用官方docker-compose with Airflow version 2.3.0 问题:“您正在 运行ning pip 作为 root 请使用用户 运行 pip”

气流版本 2.3.0 OS - macOS

我可以 运行 使用 2.2.4 但不能使用 2.3.0

还有 运行 下面的命令也在 运行ning docker-compose up airflow-init

之前
mkdir -p ./dags ./logs ./plugins
echo -e "AIRFLOW_UID=$(id -u)" > .env

Docker-撰写 curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.3.0/docker-compose.yaml'

Docker文件包含: 用户:“${AIRFLOW_UID:-50000}:0

当你执行 "echo -e "AIRFLOW_UID=$(id -u)" > .env" AIRFLOW_UID 替换为您的 OS 用户。但似乎 docker 在 MacOS 中没有得到 AIRFLOW_UID 变量,所以 docker 把它放在 AIRFLOW_UID=0 上。并且来自 root 用户的 运行。在 2.3.0 中你不能通过 root 用户安装 pip 包

来自气流文档:

For other operating systems, you will get warning that AIRFLOW_UID is not set, but you can ignore it. You can also manually create the .env file in the same folder your docker-compose.yaml is placed with this content to get rid of the warning:

AIRFLOW_UID=50000

所以尝试将 AIRFLOW_UID=50000 添加到您的 .env.
或者从 .env 中删除 AIRFLOW_UID。 Docker 将 AIRFLOW_UID=50000 作为 Docker 文件中的默认变量。

//英语不好请见谅

仅供参考,这个错误是在 2.3.0 中引入的,当时他们设置了一个保护措施以确保 pip 永远不会 运行 作为 root。问题是 init 容器在做它的事情之前从不切换到 AIRFLOW_UID 用户,但它确实安装了 _PIP_ADDITIONAL_REQUIREMENTS 因为它只是所有容器 运行 的通用代码......甚至尽管 init 容器确实不需要额外的要求。因此,简单的解决方法是您可以通过在初始化容器的环境部分的 docker-compose.yaml 中添加 _PIP_ADDITIONAL_REQUIREMENTS: '' 来显式覆盖初始化容器的环境变量。

您可以在此处查看采用该确切方法的官方修复:https://github.com/apache/airflow/pull/23517/files