我正在运行docker-compose
以使用以下配置将django与其他一些服务集合在一起:
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提供足够的权限。或者,使用virtualenv运行它会更明智,因为问题似乎是访问系统范围的python文件夹?
答案 0 :(得分:0)
你可以通过在Docker之外解决它的方式来解决这个问题。要么为该用户提供该文件夹/结构的适当权限,要么就像您说的那样可以使用virtualenv。
答案 1 :(得分:0)
您是否尝试使用privileged
选项为容器提供扩展权限?
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"