【问题标题】:Dockerfile: Permission denied when trying to install ruby-buildDockerfile:尝试安装 ruby​​-build 时权限被拒绝
【发布时间】:2016-02-21 02:14:36
【问题描述】:

我正在尝试在我的 Dockerfile 中以非 root 用户身份安装 ruby​​-build,但出现权限被拒绝错误。如何授予部署用户这样做的权限?

错误

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

Dockerfile

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

【问题讨论】:

  • 这里有什么问题?非 root 用户通常无法写入 /usr/local 路径。
  • 我不知道如何授予用户这样做的权限。
  • 您以 root 身份更改目录的权限。但这不太可能是这里的实际答案。更有可能您应该以 root 身份安装它,或者以非 root 用户身份将其安装到某个非系统位置。
  • 我已经尝试过使用RUN chown -R deploy /usr/local/share/,但我会导致更多权限被拒绝,直到 chown 不起作用。但是现在我得到install: cannot create regular file /usr/local/bin/rbenv-install': File exists

标签: ruby docker centos dockerfile


【解决方案1】:

您正在尝试使用 deploy 用户以 root 身份安装 ruby​​-build。根据here,“作为独立程序安装(高级)”。

你可以尝试这样的事情(使用 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

【讨论】:

  • 解决了这个问题,但现在找不到 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
  • 是的,或者ENV PATH /home/deploy/.rbenv/bin:$PATH
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-15
  • 2020-05-01
  • 2011-05-23
  • 2021-02-10
  • 2016-03-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多