Docker用户权限在访问容器中的文件夹时被拒绝

我正在运行docker-compose将django与其他一些服务结合在一起,具有以下configuration:

Dockerfile

 FROM ubuntu:16.10 FROM python:3.5.0 ENV EXTRACTOR_SRC=. ENV EXTRACTOR_SRVHOME=/srv ENV EXTRACTOR_SRVPROJ=/srv/extractor_django #Install package dependencies RUN apt-get update && apt-get -y upgrade RUN apt-get install -y python python-pip virtualenvwrapper # Create application subdirectories WORKDIR $EXTRACTOR_SRVHOME RUN mkdir media static logs VOLUME ["$EXTRACTOR_SRVHOME/media/", "$EXTRACTOR_SRVHOME/logs/"] # Copy application source code to SRCDIR COPY $EXTRACTOR_SRC $EXTRACTOR_SRVPROJ # Install Python dependencies RUN pip install -r $EXTRACTOR_SRVPROJ/requirements.txt # create user RUN adduser --disabled-password --gecos '' dockeruser 

(相关)Docker-compose.yml

 version: '2' services: # Django web server web: build: context: . dockerfile: Dockerfile hostname: web command: /srv/www/run_web.sh volumes: - .:/srv/www ports: - "8000:8000" 

run_web.sh

 #!/bin/bash set -o verbose sleep 15 cd /srv/extractor_django su -m dockeruser -c "python manage.py makemigrations" su -m dockeruser -c "python manage.py migrate" su -m dockeruser -c "python manage.py collectstatic --noinput" # Start Gunicorn processes echo Starting Gunicorn. su -m dockeruser -c "gunicorn extractorService.wsgi:application \ --name extractor_django \ --bind 0.0.0.0:8000 \ --workers 10 \ --log-level=info" 

在运行期间,其中一个python需求(spacy)会尝试在受限制的文件夹中存储和访问文件,从而导致错误:

 PermissionError: [Errno 13] Permission denied: '/usr/local/lib/python3.5/site-packages/spacy/data' 

有没有办法,我可以给dockeruser足够的权限,将工作。 另外,如果这个问题似乎可以访问系统范围的python文件夹,那么用virtualenv来运行它会更明智吗?

你可以用Docker以外的方式来解决这个问题。 要么给该用户适当的权限,通过该文件夹/结构,或者你说你可以使用virtualenv。

你有没有尝试给特权的容器扩展特权?

 version: '2' services: # Django web server web: build: privileged: true context: . dockerfile: Dockerfile hostname: web command: /srv/www/run_web.sh volumes: - .:/srv/www ports: - "8000:8000"