2017-02-22 53 views
0

С Докер, я хотел бы создать среду, в которой я могу сделать изменений в локальных файлах, в то время как контейнер служит сказал файлы.Docker/Rails - Отказано в @ dir_s_mkdir Errno :: EACCESS

Однако, я получаю следующее сообщение об ошибке, после запуска 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 мой аккаунт Windows, является администратором, то PowerShell я бегу эти команды at работает как Administrator, а пользователь контейнера является root, поэтому я действительно не могу найти, какое разрешение ему не хватает.

Я использую Docker для Windows, с Hyper-V водителя, а следующие Dockerfile и Докер-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 

docker-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" 

ответ

0

Проблема, с которой я столкнулся, была связана с неудачей docker-machine от другой установки докера, я забыл удалить ее в это время и не понял, что она все равно будет присутствовать на новой установке.

После удаления и создания нового docker-machine, добавив virtual switchaccording to official documentation, у меня больше не было разрешений.

1

@Filipe Не могли бы вы подтвердить, что ваш пользователь имеет право на запись в каталог "." на окнах? Выполнение в качестве администратора не гарантирует полного доступа на чтение/запись к смонтированным томам из-за интеграции samba.

+0

Благодарим Роберто, а не за эту проблему, но при совместном использовании тома с контейнером (на C:/Users) я должен был предоставить мне эти разрешения. Права администратора в Windows очень запутывают ... –