मेरे पास इस तरह एक परियोजना निर्देशिका है:
|-var/www|-docker-compose.yml|-app|--uploads|---photos|-Dockerfile
यह मेरा है docker-compose.yml
फ़ाइल:
myapp: build: context: myfolder dockerfile: Dockerfile container_name: flask image: api/v1:01 restart: unless-stopped environment: APP_ENV: "prod" APP_DEBUG: "False" APP_PORT: 5000 volumes: - appdata:/var/www
मुझे क्या चाहिए: मैं बदलना चाहता हूं app/uploads/photos
इस फ़ोल्डर की अनुमति 777
.यह एक अपलोड फ़ोल्डर है,इसलिए उपयोगकर्ता इस फ़ोल्डर में अपलोड कर सकता है ।
मेरा Dockerfile
अब इस तरह दिख रहा है:
FROM python:3.6.8-alpine3.9ENV GROUP_ID=1000 \ USER_ID=1000WORKDIR /var/www/ADD . /var/www/RUN apk add --no-cache build-base libffi-dev openssl-dev ncurses-devRUN pip install --upgrade pipRUN pip install -r requirements.txtRUN addgroup -g $GROUP_ID wwwRUN adduser -D -u $USER_ID -G www www -s /bin/shUSER wwwEXPOSE 5000
इस में देखने के बाद प्रश्न,मैं जो चाहता हूं उसे हासिल करने के लिए,मैंने नीचे कोशिश की:
FROM python:3.6.8-alpine3.9ENV GROUP_ID=1000 \ USER_ID=1000WORKDIR /var/www/ADD . /var/www/RUN apk add --no-cache build-base libffi-dev openssl-dev ncurses-devRUN pip install --upgrade pipRUN pip install -r requirements.txtRUN addgroup -g $GROUP_ID wwwRUN adduser -D -u $USER_ID -G www www -s /bin/shRUN chown -R www:www /var/wwwRUN chmod -R 777 /var/www/uploadsRUN chmod -R 777 /var/www/uploads/photosUSER wwwEXPOSE 5000
लेकिन ऐसा लगता है chmod
मेरे डॉकरफाइल में कमांड प्रभावी नहीं हो रहा है । क्योंकि जब भी मैं कुछ फाइलें अपलोड करता हूं app/uploads/photos
मेरे कोड में, मेरे nginx
सर्वर को यह त्रुटि मिलती रहती है:
PermissionError: [Errno 13] Permission denied: '/var/www/uploads/photos/myfilename.png'
कोई कृपया मदद करें । कृपया किसी फ़ोल्डर की अनुमति को बदलने के लिए एक समाधान प्रदान करें Dockerfile
.
अद्यतन करें:
मैंने अनुमति बदलने की कोशिश की /var/www/uploads
कंटेनर बनाने के बाद और कंटेनर नीचे करके चल रहा है:
docker exec -it myapp /bin/sh
फिर दौड़ें
chmod -R 777 /var/www/uploads
मुझे क्या मिलता है chmod: /var/www/uploads: Operation not permitted
इसलिए मुझे संदेह है कि यह त्रुटि तब भी होगी जब डॉकर निर्माण कर रहा होगा, तब के अनुसार इस जवाब से serverfault, मैंने डॉकरफाइल को इसमें संशोधित करने का प्रयास किया:
FROM python:3.6.8-alpine3.9ENV GROUP_ID=1000 \ USER_ID=1000WORKDIR /var/www/ADD . /var/www/USER rootRUN chmod -R 777 /var/www/uploadsRUN addgroup -g $GROUP_ID wwwRUN adduser -D -u $USER_ID -G www www -s /bin/shUSER wwwRUN apk add --no-cache build-base libffi-dev openssl-dev ncurses-devRUN pip install --upgrade pipRUN pip install -r requirements.txtEXPOSE 5000
लेकिन यह अभी भी काम नहीं करता है । लेकिन ऐसा लगता है कि मेरा उपरोक्त दृष्टिकोण भी गलत है । क्योंकि मैं पहले से ही अंदर चला गया root
में dockerfile
.लेकिन उसी समय, जब मैं होस्ट में कंटेनर का उपयोग करता हूं docker exec
, यह भी हो रही है Operation not permitted
.
मैं डॉकर में बहुत नया हूं । बस यह समझ नहीं सकता कि यह कैसे किया जाए ।
मुझे क्या जानने की उम्मीद है:
1) फ़ोल्डर कैसे बदलें var/www/uploads
777 की अनुमति के लिए?
2) क्या समस्या है जिसके कारण मैं अपने दृष्टिकोण से अनुमति नहीं बदल सकता?
3) इसे हासिल करने का बेहतर तरीका क्या है? (यदि कोई हो)