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

Docker Compose挂载脚本执行提示Permission Denied问题排查

问题原因及解决方案

核心原因

出现Permission denied的常见原因有两个:

  1. 宿主机上的run_code.sh文件缺少执行权限(x权限),挂载到容器后权限会被继承,导致无法直接执行。
  2. RabbitMQ镜像默认以rabbitmq普通用户运行,若挂载的脚本或其父目录权限设置限制了该用户的读取/执行权限,也会触发权限错误。

具体解决步骤

1. 给宿主机的脚本添加执行权限

在Azure VM的Ubuntu终端中执行以下命令,为本地的run_code.sh添加执行权限:

chmod +x ./cmd/run_code.sh

这个操作会让脚本在容器内也继承到执行权限,直接执行/etc/cmd/run_code.sh就不会报错。

2. 若仍报错,改用bash读取脚本内容执行

如果宿主机无法修改脚本权限(比如文件来自只读存储),可以绕过执行权限检查,让bash直接读取脚本内容并执行:
修改docker-compose中的command字段:

command: bash -c 'cat /etc/cmd/run_code.sh | bash'

这种方式只需要脚本有**读取权限(r权限)**即可,不需要执行权限。

3. 检查容器内目录权限(可选)

如果以上操作仍无效,可临时进入容器检查/etc/cmd目录和脚本的权限:

docker-compose exec rabbitmq bash
# 进入容器后执行
ls -l /etc/cmd/run_code.sh
ls -ld /etc/cmd

确认rabbitmq用户对该文件和目录有至少读取权限,若没有,可在宿主机调整挂载目录的权限,或者在docker-compose中添加user: root以root用户运行容器(注意:生产环境不建议长期用root运行)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 16:03:25