如何修复 Docker sh 入口点中的 'Permission denied'

How to fix 'Permission denied' in Docker sh entrypoint

我正在尝试为 Garry 的 Mod 服务器创建易于使用的 Docker 图像。虽然我的 Docker 图像构建得很好,但 运行 它作为一个容器总是会导致一个错误:/bin/sh: 1: ./easygmod.sh: Permission denied.

我正在使用 cm2network/steamcmd 图像作为基础。我已经尝试了上述基本图像具有的两个标签。我已经尝试 chmod +x,将用户更改为 root,并在 easygmod.sh 脚本的第一行中摆弄 shebang,以及一些可能的拼写错误,特别是在文件名和路径。

我有一个GitHub repository for this project which auto-builds to Docker Hub。目前,涉及问题脚本的代码行是:

# Start main script
ADD easygmod.sh .
RUN chmod +x easygmod.sh
USER steam
CMD ./easygmod.sh

此外,脚本的 shebang/first 行当前为 #!/bin/sh

尽管没有合理的解释,easygmod.sh 脚本拒绝执行,总是抛出错误 Permission denied。这尤其令人困惑,因为 my only other public GitHub project 非常相似(与 cm2network/steamcmd 具有相同基础 OS 的相似样式 Docker 图像),从来没有出现过这样的问题。

该文件不属于容器中的 steam,因此 chmod +x 不足。将 --chown=steam 添加到 ADD,或将 chmod+x 更改为 a+rx

此外,您没有指定 CWD 或放置这些文件的路径。该图像的 root 版本可能具有 steam 无法访问的 CWD。您应该改用 /home/steam/