[英]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 存儲庫,它會自動構建到 Docker Hub 。 目前,涉及有問題腳本的代碼行是:
# Start main script
ADD easygmod.sh .
RUN chmod +x easygmod.sh
USER steam
CMD ./easygmod.sh
此外,腳本的 shebang/第一行當前是#!/bin/sh
。
盡管沒有合乎邏輯的解釋, easygmod.sh
腳本拒絕執行,總是拋出錯誤Permission denied
。 考慮到我唯一的其他公共 GitHub 項目(與cm2network/steamcmd
具有相同基本操作系統的類似風格的 Docker 映像),這尤其令人困惑,但從未出現過任何此類問題。
該文件不歸容器中的steam
所有,因此chmod +x
是不夠的。 要么將--chown=steam
添加到ADD
,要么將您的chmod
從+x
更改為a+rx
。
此外,您沒有指定 CWD 或放置這些文件的路徑。很可能該映像的root
版本具有steam
無法訪問的 CWD。 你應該使用/home/steam/
來代替。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.