Airflow通过Dockerfile入口脚本创建用户失败求助
Airflow用户创建命令未执行的问题排查与解决
问题原因
核心问题出在airflow scheduler的执行方式上:你当前是直接前台运行该命令,bash脚本会在此处阻塞,后续的用户创建、webserver启动命令根本不会被执行。你看到scheduler正常运行,是因为脚本卡在这一步停住了;而webserver能正常工作,大概率是你手动exec进容器后额外执行了启动命令,并非脚本本身完成了全部流程。
解决方法
将airflow scheduler改为后台运行,在命令末尾添加&符号,让脚本可以继续执行后续步骤。修改后的entrypoint.sh内容如下:
#!/usr/bin/env bash # initialize the database airflow db init # run the scheduler in the background airflow scheduler & # create the user airflow users create -u admin -p admin -e admin@admin.com -f admin -l admin -r Admin # run the webserver exec airflow webserver
可选优化
如果遇到用户创建命令因scheduler未完全初始化而失败的情况,可以在后台启动scheduler后添加短暂延迟,给数据库和scheduler留足初始化时间:
airflow scheduler & # 延迟5秒,可根据实际情况调整时长 sleep 5
内容的提问来源于stack exchange,提问作者Peter Malik
相关产品推荐
相关产品推荐

