Docker / Rails – 权限被拒绝@ dir_s_mkdir Errno :: EACCESS

有了Docker,我想build立一个可以对本地文件进行更改的环境,而容器则为这些文件提供服务。

不过,在运行docker-compose run web之后,我得到以下错误:

 => Booting WEBrick => Rails 5.0.0.1 application starting in development on http://0.0.0.0:3000 => Run `rails server -h` for more startup options Exiting /usr/local/lib/ruby/2.3.0/fileutils.rb:253:in `mkdir': Permission denied @ dir_s_mkdir - /usr/src/app/tmp (Errno::EACCES) from /usr/local/lib/ruby/2.3.0/fileutils.rb:253:in `fu_mkdir' from /usr/local/lib/ruby/2.3.0/fileutils.rb:227:in `block (2 levels) in mkdir_p' from /usr/local/lib/ruby/2.3.0/fileutils.rb:225:in `reverse_each' from /usr/local/lib/ruby/2.3.0/fileutils.rb:225:in `block in mkdir_p' from /usr/local/lib/ruby/2.3.0/fileutils.rb:211:in `each' from /usr/local/lib/ruby/2.3.0/fileutils.rb:211:in `mkdir_p' from /usr/local/bundle/gems/railties-5.0.0.1/lib/rails/commands/server.rb:119:in `block in create_tmp_directories' from /usr/local/bundle/gems/railties-5.0.0.1/lib/rails/commands/server.rb:118:in `each' from /usr/local/bundle/gems/railties-5.0.0.1/lib/rails/commands/server.rb:118:in `create_tmp_directories' from /usr/local/bundle/gems/railties-5.0.0.1/lib/rails/commands/server.rb:75:in `start' from /usr/local/bundle/gems/railties-5.0.0.1/lib/rails/commands/commands_tasks.rb:90:in `block in server' from /usr/local/bundle/gems/railties-5.0.0.1/lib/rails/commands/commands_tasks.rb:85:in `tap' from /usr/local/bundle/gems/railties-5.0.0.1/lib/rails/commands/commands_tasks.rb:85:in `server' from /usr/local/bundle/gems/railties-5.0.0.1/lib/rails/commands/commands_tasks.rb:49:in `run_command!' from /usr/local/bundle/gems/railties-5.0.0.1/lib/rails/commands.rb:18:in `<top (required)>' from bin/rails:4:in `require' from bin/rails:4:in `<main>' 

这些驱动器在Docker Settings上共享,我的Windows帐户是Administrator,运行这些命令的PowerShell以Administrator身份运行,而容器的用户是root,所以我确实找不到它缺less的权限。

我使用带有Hyper-v驱动程序的Docker for Windows ,以下Dockerfiledocker-compose.yml位于应用程序的目录中:

Dockerfile

 # Official Ubuntu image with Ruby installed FROM ruby:2.3.0 # Update package lists and install dependencies RUN apt-get update && apt-get install -y \ build-essential \ libpq-dev \ postgresql-client \ nodejs \ sqlite3 \ libqt4-webkit \ libqt4-dev \ xvfb \ && rm -rf /var/lib/apt/lists/* # Define where the application will live inside the image ENV APP_HOME /usr/src/app # Create the application folder RUN mkdir -p $APP_HOME # Set the working directory inside the image WORKDIR $APP_HOME # Add Gemfile and install dependencies COPY Gemfile* $APP_HOME/ RUN bundle install # Copy local folder to work directory COPY . $APP_HOME 

泊坞窗,compose.yml

 version: '2' services: web: privileged: true build: . command: bundle exec rails server -p 3000 -b '0.0.0.0' volumes: - .:/usr/src/app ports: - "3000:3000" 

@Filipe你可以确认你的用户是否有写权限的目录“。” 在窗户上? 以pipe理员身份运行不保证由于samba集成的原因,对已装入卷的完全读/写访问权限。

我遇到的问题是由于另一个docker-machine安装造成了一个老的docker-machine ,我忘记了删除它,但是没有意识到它仍然会在新的安装中。

删除并创build一个新的docker-machine , 根据官方文档添加virtual switch ,我没有权限问题了。