[英]Docker/Rails - Permission denied @ dir_s_mkdir Errno::EACCESS
With Docker, I'd like to set up an environment where I can make changes on local files, while the container serves said files.
借助Docker,我想建立一个环境,在该环境中可以对本地文件进行更改,而容器则可以提供所述文件。
However, I've been getting the following error, after running docker-compose run web
: 但是,在运行
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>'
The drives are shared on Docker Settings, my Windows Account is Administrator, the PowerShell I'm running these commands at is running as Administrator, and the container's user is root, so I really can't find which permission is it lacking. 这些驱动器在Docker设置上共享,我的Windows帐户是Administrator,运行我在这些命令上运行的PowerShell以Administrator身份运行,并且容器的用户是root,所以我真的找不到缺少的权限。
I'm using Docker for Windows with Hyper-v driver, and the following Dockerfile and docker-compose.yml are within the application's directory: 我正在将Hyper-v驱动程序用于Windows的Docker ,并且以下Dockerfile和docker-compose.yml位于应用程序的目录中:
Dockerfile Docker文件
# 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 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"
@Filipe can you please confirm if your user has write access to the directory "." @Filipe能否请您确认您的用户是否具有对目录“”的写权限。 on windows?
在窗户上? Running as Administrator doesn't guarantee full read/write access to the mounted volumes due to the samba integration.
由于具有samba集成,因此以管理员身份运行不能保证对装入的卷具有完全的读/写访问权限。
The issue I was having was due to an old failing docker-machine
from another installation of docker, I forgot to delete it that time and didn't realize that it would still be there on a new installation. 我遇到的问题是由于另一个安装的docker上的旧
docker-machine
故障,我忘记了删除该时间,却没有意识到在新的安装中仍然存在。
After removing and creating a new docker-machine
, adding the virtual switch
according to official documentation , I did not have the permission issues anymore. 在删除并创建了新的
docker-machine
, 根据官方文档添加了virtual switch
,我不再有权限问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.