Dockerfile: разрешение отклонено при попытке установить ruby-build

Я пытаюсь установить ruby-build как не-root в свой Dockerfile, но получаю сообщение об ошибке отказа в разрешении. Как я могу предоставить доступ для этого пользователю развертывания?

ошибка

mkdir: cannot create directory `/usr/local/share/ruby-build': Permission denied

Докерфайл

FROM centos:6.6

RUN yum update -y
RUN yum install git openssl-devel openssh-server sudo openssl readline-devel readline zlib-devel zlib libxml2-devel libxml2 libxslt-devel libxslt nginx tar gcc libaio libaio-devel -y
RUN rpm -Uvh https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-12.5.1-1.el6.x86_64.rpm
RUN sed -i -e "s/Defaults    requiretty.*/ #Defaults    requiretty/g" /etc/sudoers

RUN mkdir -p /var/run/sshd

# RUN adduser deploy -g wheel -p Password1
RUN useradd -m -u 1000 -G wheel deploy && sed -ri 's/^(%wheel.*)(ALL)$/\1NOPASSWD: \2/' /etc/sudoers
USER deploy

RUN git clone https://github.com/sstephenson/rbenv.git $HOME/.rbenv/
RUN git clone https://github.com/sstephenson/ruby-build.git $HOME/.rbenv/plugins/ruby-build
RUN $HOME/.rbenv/plugins/ruby-build/install.sh

ENV PATH $HOME/.rbenv/bin:$PATH
RUN echo 'eval "$(rbenv init -)"' >> /etc/profile.d/rbenv.sh
RUN echo 'eval "$(rbenv init -)"' >> $HOME/.bashrc
RUN echo 'eval "$(rbenv init -)"' >> $HOME/.bash_profile
RUN source $HOME/.bash_profile
ENV CONFIGURE_OPTS --disable-install-doc

RUN rbenv install 2.2.3
RUN rbenv global 2.2.3
RUN bash -l -c 'gem update --system'
RUN bash -l -c 'gem update'
RUN bash -l -c 'gem install nokogiri -- --use-system-libraries'
RUN bash -l -c 'gem install bundler rails-api --no-rdoc --no-ri'

RUN touch /etc/sysconfig/network

EXPOSE 3306
EXPOSE 22
EXPOSE 80
EXPOSE 3389

person Antarr Byrd    schedule 19.11.2015    source источник
comment
В чем здесь вопрос? Пользователи без полномочий root обычно не могут писать по /usr/local путям.   -  person Etan Reisner    schedule 19.11.2015
comment
Я не хочу знать, как дать пользователю разрешение на это.   -  person Antarr Byrd    schedule 19.11.2015
comment
Вы меняете разрешения на каталог как root. Но вряд ли это будет фактическим ответом здесь. Скорее всего, вам следует либо установить его от имени пользователя root, либо установить его в какое-либо несистемное место от имени пользователя без полномочий root.   -  person Etan Reisner    schedule 19.11.2015
comment
Я пробовал это с помощью RUN chown -R deploy /usr/local/share/, но это привело бы к отказу в большем количестве разрешений, пока chown не сработает. Однако теперь я получаю install: cannot create regular file /usr/local/bin/rbenv-install': File exists   -  person Antarr Byrd    schedule 19.11.2015


Ответы (1)


Вы пытаетесь установить ruby-build от имени пользователя root. «Установка как отдельной программы (дополнительно)» согласно здесь.

Вы можете попробовать что-то вроде этого (используя sudo):

FROM centos:6.6

RUN yum update -y
RUN yum install git openssl-devel openssh-server sudo openssl readline-devel readline zlib-devel zlib libxml2-devel libxml2 libxslt-devel libxslt nginx tar gcc libaio libaio-devel -y
RUN rpm -Uvh https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-12.5.1-1.el6.x86_64.rpm
RUN sed -i -e "s/Defaults    requiretty.*/ #Defaults    requiretty/g" /etc/sudoers

RUN mkdir -p /var/run/sshd

# RUN adduser deploy -g wheel -p Password1
RUN useradd -m -u 1000 -G wheel deploy && echo '%wheel  ALL=(ALL)  NOPASSWD: ALL' >> /etc/sudoers.d/wheel
USER deploy

RUN git clone https://github.com/sstephenson/rbenv.git $HOME/.rbenv/
RUN git clone https://github.com/sstephenson/ruby-build.git $HOME/.rbenv/plugins/ruby-build
RUN sudo $HOME/.rbenv/plugins/ruby-build/install.sh

ENV PATH /home/deploy/.rbenv/bin:$PATH
RUN echo 'eval "$(rbenv init -)"' | sudo tee -a /etc/profile.d/rbenv.sh
RUN echo 'eval "$(rbenv init -)"' >> $HOME/.bashrc
RUN echo 'eval "$(rbenv init -)"' >> $HOME/.bash_profile
RUN source $HOME/.bash_profile
ENV CONFIGURE_OPTS --disable-install-doc

RUN rbenv install 2.2.3
RUN rbenv global 2.2.3
RUN bash -l -c 'gem update --system'
RUN bash -l -c 'gem update'
RUN bash -l -c 'gem install nokogiri -- --use-system-libraries'
RUN bash -l -c 'gem install bundler rails-api --no-rdoc --no-ri'

RUN touch /etc/sysconfig/network

EXPOSE 3306
EXPOSE 22
EXPOSE 80
EXPOSE 3389
person Rico    schedule 19.11.2015
comment
Это исправило это, но теперь он не может найти rbenv /home/deploy/.bashrc: line 9: rbenv: command not found /home/deploy/.bash_profile: line 13: rbenv: command not found ---> 4394fb4d41af Removing intermediate container f6e5a3cb4952 Step 17 : ENV CONFIGURE_OPTS --disable-install-doc ---> Running in 3b8ec935df66 ---> 213058afb6bc Removing intermediate container 3b8ec935df66 Step 18 : RUN rbenv install 2.2.3 ---> Running in 5ec85d5beae7 /bin/sh: rbenv: command not found - person Antarr Byrd; 19.11.2015
comment
да или ENV PATH /home/deploy/.rbenv/bin:$PATH - person Rico; 19.11.2015