Windows 10系统下Docker版Apache Airflow如何挂载./logs文件夹?
解决Airflow Docker部署时logs目录挂载权限问题
问题原因
Airflow 2.x官方Docker镜像默认使用UID为50000的airflow用户运行内部服务,你本地宿主机的./logs目录默认归属当前登录用户,容器进程没有权限写入不属于自己的宿主机目录,因此会启动失败。
正确配置步骤
方案1:修改宿主机logs目录权限(通用方案,生产可用)
- 先在docker-compose.yml所在目录创建所需的三个目录:
mkdir -p ./dags ./logs ./plugins - 将logs目录的所有者修改为和容器内airflow用户匹配的UID/GID:
sudo chown -R 50000:50000 ./logs - 补全docker-compose.yml中的volumes配置:
volumes: - ./dags:/opt/airflow/dags - ./logs:/opt/airflow/logs - ./plugins:/opt/airflow/plugins
- 重启服务生效:
docker-compose down -v && docker-compose up -d
方案2:指定容器运行UID(推荐本地开发使用)
如果不想修改宿主机目录归属,可以在docker-compose.yml的公共环境变量配置块(x-airflow-common下的environment)添加两个参数,让容器使用你当前宿主机用户的身份运行:
environment: &airflow-common-env AIRFLOW_UID: $(id -u) AIRFLOW_GID: $(id -g) # 其他原有环境变量保持不变
修改后直接重启服务即可,无需调整目录权限。
临时应急方案(不推荐生产使用)
本地测试时可以直接给logs目录开全局读写权限解决问题:sudo chmod 777 ./logs
内容的提问来源于stack exchange,提问作者targetXING
相关产品推荐
相关产品推荐

