【问题标题】:How to set up correctly environment variables for airflow using docker compose in Window 10 ? airflow-init_1 ERROR: AIRFLOW_UID not set如何在 Windows 10 中使用 docker compose 为气流正确设置环境变量?气流初始化 _1 错误:未设置 AIRFLOW_UID
【发布时间】:2021-09-18 17:58:08
【问题描述】:

我在 cmd 中运行docker-compose up airflow-init 以使用docker-compose.yaml 提供的模板部署 Airflow,创建文件夹日志、插件和 dag:

C:\Users\Diego\Airflow>dir
 Volume in drive C has no label.
 Volume Serial Number is 4296-D163

 Directory of C:\Users\Diego\Airflow

09/18/2021  07:45 PM    <DIR>          .
09/18/2021  07:45 PM    <DIR>          ..
09/18/2021  07:45 PM                44 .env
09/18/2021  05:59 PM    <DIR>          dags
09/18/2021  05:52 PM             8,031 docker-compose.yaml
09/18/2021  07:44 PM    <DIR>          logs
09/18/2021  06:02 PM    <DIR>          plugins
               2 File(s)          8,075 bytes
               5 Dir(s)  22,549,196,800 bytes free

当命令运行时,给出的错误是:

C:\Users\Diego\Airflow>docker-compose up airflow-init
WARNING: The AIRFLOW_UID variable is not set. Defaulting to a blank string.
WARNING: The AIRFLOW_GID variable is not set. Defaulting to a blank string.
Creating network "airflow_default" with the default driver
Creating volume "airflow_postgres-db-volume" with default driver
Creating airflow_redis_1    ... done                                                                                    Creating airflow_postgres_1 ... done                                                                                    Creating airflow_airflow-init_1 ... done                                                                                Attaching to airflow_airflow-init_1
airflow-init_1       | ERROR!!!: AIRFLOW_UID not set!
airflow-init_1       | Please follow these instructions to set AIRFLOW_UID and AIRFLOW_GID environment variables:
airflow-init_1       |     https://airflow.apache.org/docs/apache-airflow/stable/start/docker.html#initializing-environment

从 docker 同步访问到文件夹时似乎出错,在 Linux 或 mac 中通过使用 echo -e "AIRFLOW_UID=$(id -u)\nAIRFLOW_GID=0" &gt; .env 定义 env 变量文件来解决。

我尝试运行 echo 命令,这会导致在目录中创建 .env 文件,但这无助于让 airflow-init 在没有错误的情况下运行,因此这仅适用于 Linux,已安装的卷在容器中似乎无法使用 windows 文件系统用户/组权限,因此容器和主机没有匹配的文件权限。

如何在 Window 10 中使用 docker-compose 为气流正确设置环境变量?

Docker 桌面 4.0.1 步骤:

  • 从 yaml Airflow 社区网页获取文件并将其放在一个目录中
  • 在同一目录下创建文件夹日志、dags、插件
  • 运行docker-compose up airflow-init

【问题讨论】:

    标签: docker docker-compose airflow


    【解决方案1】:

    您可以手动创建 .env 文件。只需创建一个包含两行的文件:

    AIRFLOW_UID=50000
    AIRFLOW_GID=0
    

    只要确保在编辑它的任何编辑器中将文件保存为文本文件即可。默认情况下,如果你在 Windows 编辑器中保存它,它可能会以不正确的编码保存(http://www2.hawaii.edu/~jamess/textonly.htm

    顺便说一句。由于 Airflow 2.1.4(甚至可能在今天发布)您将不需要该文件用于 Windows。这已经修复,但需要发布 - 所以您甚至可以等待 2.1.4 发布。

    【讨论】:

    • 是的。 2.1.4 出来了,它应该可以解决创建 .env 文件的问题(简而言之 - 你不必再这样做了)
    • airflow.apache.org/docs/apache-airflow/stable/start/docker.html 是您获取最新 docker-compose 的地方
    • 谢谢,帖子中的 .env 文件解决了这个问题。我刚刚测试了 2.1.4 的新文件,首先我用 ``` docker-compose down --volumes --remove-orphans ``` 清除过去的图像,并在 apache 网页中获取新的 yaml 文件示例,但我仍然看到一些警告警告:未设置 AIRFLOW_UID 变量。默认为空字符串。尽管它在 init 和 compose up 上运行没有问题,但警告是否仅适用于 unix ?
    • 是的。我认为您还应该在运行 init 时看到明确提及 linux 的警告
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    • 2022-11-10
    • 2023-03-06
    • 2019-09-11
    • 2017-11-29
    • 2020-05-28
    相关资源
    最近更新 更多