Проблемы с правами доступа к файлам в Dockerfile для приложения ruby - PullRequest
0 голосов
/ 24 августа 2018

Здравствуйте. Я пытаюсь создать приложение ruby, используя идентификатор пользователя и идентификатор группы в контейнере, как на хосте, т.е.1000.

У меня проблемы с разрешениями, но я не могу понять, почему.

Вот ошибка, которую я получаю:

There was an error while trying to write to `/home/appuser/myapp/Gemfile.lock`.
It is likely that you need to grant write permissions for that path.
The command '/bin/sh -c bundle install' returned a non-zero code: 23

Вот мой файл Docker:

# Dockerfile
FROM ruby:2.5

RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs

RUN groupadd -r -g 1000 appuser
RUN useradd -r -m -u 1000 -g appuser appuser
USER appuser

RUN mkdir /home/appuser/myapp

WORKDIR /home/appuser/myapp

COPY Gemfile Gemfile.lock ./

RUN bundle install

COPY . ./

1 Ответ

0 голосов
/ 24 августа 2018

Если вам нужно чистое решение для докера, попробуйте следующее:

FROM ruby:2.5

RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs

# Reduce layers by grouping related commands into single RUN steps
RUN groupadd -r -g 1000 appuser && \
useradd -r -m -u 1000 -g appuser appuser

# Setting workdir will also create the dir if it doesn't exist, so no need to mkdir
WORKDIR /home/appuser/myapp

# Copy everything over in one go
COPY . ./

# This line should fix your issue 
# (give the user ownership of their home dir and make Gemfile.lock writable)
# Must still be root for this to work
RUN chown -R appuser:appuser /home/appuser/ && \
chmod +w /home/appuser/myapp/Gemfile.lock

USER appuser

RUN bundle install

Может быть, лучше исправить разрешения в вашей хост-системе с помощью чего-то вроде:

sudo chmod g+w Gemfile.lock
...