С Докер, я хотел бы создать среду, в которой я могу сделать изменений в локальных файлах, в то время как контейнер служит сказал файлы.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"
Благодарим Роберто, а не за эту проблему, но при совместном использовании тома с контейнером (на C:/Users) я должен был предоставить мне эти разрешения. Права администратора в Windows очень запутывают ... –