You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker环境执行dbt deps报dbt_modules权限拒绝错误

问题根因

你遇到的是两个独立问题:

  • [Errno 13] Permission denied: 'dbt_modules':dbt deps默认会在执行命令时所在的dbt项目根目录创建dbt_modules文件夹存放拉取的第三方包,你当前容器内运行进程的UID 50000对目标目录没有写入权限,导致目录创建失败。dbt_modules的路径规则和你dbt_project.yml里clean-targets的配置完全对应,没有隐藏的特殊存放路径。
  • pyarrow版本告警:安装pandas时pip默认拉取了最新的6.0.1版本,和dbt 0.21.1要求的pyarrow<3.1.0,>=3.0.0版本约束冲突。
修复方案

1. 解决目录权限问题

  • 先在宿主机的项目根目录(存放docker-compose.yaml的位置)执行命令,提前创建dbt运行需要的目录,把属主改成容器内使用的UID/GID,避免挂载后权限不匹配:
mkdir -p ./dbt/dbt_modules ./dbt/target ./dbt/dbt_packages
sudo chown -R 50000:50000 ./dbt ~/.dbt
  • 修改docker-compose.yaml的卷挂载配置,去掉~/.dbt的只读标记,否则后续dbt需要写入配置时会触发新的权限错误:
volumes:
  - ./dags:/opt/airflow/dags
  - ./logs:/opt/airflow/logs
  - ./plugins:/opt/airflow/plugins
  - ./config/airflow.cfg:/opt/airflow/airflow.cfg
  - ./dbt:/opt/airflow/dbt
  - ~/.dbt:/home/airflow/.dbt
  - ./dags:/dags
  • 执行dbt命令时必须指定正确的项目目录,不要在容器默认工作目录/opt/airflow下直接运行,否则会尝试在无权限的路径创建dbt_modules,标准执行命令如下:
dbt deps --project-dir /opt/airflow/dbt --profiles-dir /home/airflow/.dbt
  • 如果不想在宿主机提前授权,也可以修改Dockerfile,在构建镜像时提前创建dbt工作目录并给airflow用户授权:
FROM ${AIRFLOW_BASE_IMAGE}

USER root
RUN mkdir -p /opt/airflow/dbt && chown -R airflow:root /opt/airflow/dbt
USER airflow
RUN pip install dbt \
                apache-airflow-providers-microsoft-azure==3.7.0 \
                apache-airflow-providers-snowflake\
                riotwatcher \
                pandas

2. 解决pyarrow版本冲突

修改Dockerfile的pip安装命令,固定pyarrow版本到符合约束的区间,同时固定dbt版本避免后续升级带来兼容性问题:

USER airflow
RUN pip install dbt==0.21.1 \
                pyarrow==3.0.2 \
                apache-airflow-providers-microsoft-azure==3.7.0 \
                apache-airflow-providers-snowflake\
                riotwatcher \
                pandas

修改完成后重新构建镜像并重启服务:

docker-compose build --no-cache
docker-compose up -d
验证步骤
  • 进入airflow worker容器:docker-compose exec airflow-worker bash
  • 执行上述dbt deps命令,确认可以正常拉取fishtown-analytics/dbt_utils包,无权限报错
  • 执行pip show pyarrow,确认版本为3.0.2,版本不兼容告警消失

内容的提问来源于stack exchange,提问作者ryanwacker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 03:12:15