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

Ubuntu下Docker运行pytest遇权限拒绝及环境变量缺失问题

解决方案

一、文件权限拒绝(Errno 13)处理

  • 核心原因:容器内执行pytest的用户没有目标文件的读取权限,通常是宿主机挂载的文件/目录权限与容器运行用户不匹配。
  • 操作步骤:
    1. 确认容器默认运行用户:进入connectors_connectors_1容器,执行whoami查看当前用户,或者检查Dockerfile中的USER指令。
    2. 对齐宿主机文件权限:
      • 若容器默认用root运行,给宿主机上的目标文件添加其他用户读权限:
        chmod o+r /宿主机路径/mediacost_4017119502.csv /宿主机路径/6012438.zip
        
      • 若容器用非root用户(比如UID 1000),直接修改宿主机文件的所属用户:
        chown 1000:1000 /宿主机路径/mediacost_4017119502.csv /宿主机路径/6012438.zip
        
    3. 也可以在docker-compose.yml的connectors服务中添加user: "1000:1000",让容器以指定用户启动,避免权限不匹配。

二、指定用户运行时的环境变量与端口问题

  • 核心原因:单独用docker run没有继承docker-compose.yml中的环境变量、端口映射等配置,导致程序找不到SECRETS_PATH,同时端口配置无效。
  • 操作步骤:
    1. 优先用docker-compose指定用户运行测试:
      docker-compose run --user 1000:1000 connectors_connectors_1 pytest test_all_connector.py
      
      这个命令会自动加载docker-compose.yml里的所有配置(环境变量、挂载、端口等),无需手动指定。
    2. 若必须用docker run,手动补全配置:
      docker run --user 1000:1000 \
        -e SECRETS_PATH=/容器内的秘钥路径 \
        -p 宿主机端口:容器端口 \
        connectors_connectors_1 pytest test_all_connector.py
      
      其中/容器内的秘钥路径要和docker-compose.yml中配置的SECRETS_PATH一致,端口也要对应配置里的映射关系。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 11:20:33