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"
- 在使用Docker-machine重新configurationdocker客户端后,如何将其设置回Docker for Windows hyperv
- hyperkube代理,kubelet找不到iptables链,rkt运行–net = host
- 在dockerization之后,Gunicorn找不到静态文件
- 与Angular 4和Django的Docker编译成功,但localhost:4200不能正常工作
- 为什么我无法通过“docker-compose run web”命令运行django迁移?
- 初学者Docker-Compose&Django
- Docker容器中的Django + uWSGI / nginx – ImportError:没有名为.wsgi的模块
- 如何使用django与django?
- docker工具本地开发 – 我需要2个Docker文件吗?
- Django无法在Docker安装中连接到Postgres
- 即使它在同一个目录下,Docker构build好像看不到requirements.txt