我正在尝试在 docker-compose 文件中安装卷,并在路径中运行 bash 文件。 但我收到了
Permission Denied
错误。
这里是 docker-compose:
version: '3.8'
services:
rabbitmq:
image: rabbitmq:3-management
volumes:
- ./cmd/run_code.sh:ro
- ./conf/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf:ro
- ./conf/definitions.json:/etc/rabbitmq/definitions.json:ro
ports:
- "5672:5672"
- "15672:15672"
command: bash -c 'run_code.sh'
这是我得到的输出:
rabbitmq_1 | bash: line 1: /etc/cmd/run_code.sh: Permission denied
我正在使用 Ubuntu 22.04 的 Azure VM 上运行。
我做错了什么?
您使用的安装路径似乎有问题。我没有看到您报告的确切权限错误,但我确实看到有人说:
来自守护程序的错误响应:无效的卷规范:'/home/projects/so-66767896/cmd/run_code.sh:ro:rw':类型“bind”的安装配置无效:安装路径无效:'ro'安装路径必须绝对的
我也不确定包含“/etc”的路径来自哪里。你如何运行这个配置?
如果我将您的相关安装替换为:
volumes:
- ./cmd/run_code.sh:/cmd/run_code.sh:ro
...并让
command
明确使用该路径:
command: bash -c '/cmd/run_code.sh'
容器运行我的脚本(回显并退出),没有问题。
这是修改后的完整配置:
version: '3.8'
services:
rabbitmq:
image: rabbitmq:3-management
volumes:
- ./cmd/run_code.sh:/cmd/run_code.sh:ro
- ./conf/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf:ro
- ./conf/definitions.json:/etc/rabbitmq/definitions.json:ro
ports:
- "5672:5672"
- "15672:15672"
command: bash -c '/cmd/run_code.sh'