Как исправить «Отказано в доступе» в Docker sh - PullRequest
1 голос
/ 23 июня 2019

Я пытаюсь создать простой в использовании образ Docker для мод-сервера Garry. Несмотря на то, что мой образ Docker работает нормально, его запуск в качестве контейнера всегда приводит к одной ошибке: /bin/sh: 1: ./easygmod.sh: Permission denied.

Я использую cm2network/steamcmd изображение в качестве базы. Я пробовал оба тега, которые есть у вышеупомянутого базового изображения. Я пробовал chmod +x, меняя пользователей на root и перебирая шебанг в первой строке скрипта easygmod.sh, а также ряд возможных опечаток, особенно в именах файлов и путях.

У меня есть GitHub репозиторий для этого проекта, который автоматически встраивается в Docker Hub . В настоящее время строки кода, включающие проблемный скрипт:

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

Кроме того, шебанг / первая строка скрипта в настоящее время #!/bin/sh.

Несмотря на отсутствие логического объяснения, сценарий easygmod.sh отказывается выполняться, всегда выдавая ошибку Permission denied. Это особенно сбивает с толку, учитывая, что мой единственный общедоступный проект GitHub , который очень похож (образ Docker аналогичного стиля с той же базовой ОС, что и cm2network/steamcmd), никогда не имел подобных проблем.

1 Ответ

1 голос
/ 23 июня 2019

Файл не принадлежит steam в контейнере, поэтому chmod +x было недостаточно.Либо добавьте --chown=steam к ADD, либо измените chmod с +x на a+rx.

Кроме того, вы не указали CWD или путь для размещения этих файлов. Этовероятно, что root версия этого образа имеет CWD, к которому steam не может получить доступ.Вместо этого вы должны использовать /home/steam/.

...