डॉकरफाइल में फ़ोल्डर की अनुमति को 777 में कैसे बदलें?

मेरे पास इस तरह एक परियोजना निर्देशिका है:

|-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) इसे हासिल करने का बेहतर तरीका क्या है? (यदि कोई हो)

आपको वास्तव में सेट नहीं करना चाहिए 777, शायद उस निर्देशिका के स्वामित्व को बदलना बेहतर होगा www खाता।

वैसे भी डॉकरफाइल में आपके परिवर्तन वास्तव में मायने नहीं रखते हैं, क्योंकि आपके पास वॉल्यूम है (appdata:/var/www) जिसका अर्थ है कि आपके पास छवि में मौजूद अनुमतियां आपके वॉल्यूम द्वारा नकाबपोश हैं ।

आपका docker exec -it myapp /bin/sh विफल हो जाएगा क्योंकि वह छवि चल रही है www जो स्वामित्व वाली फ़ाइल पर चामोद नहीं चला पाएगा www.

वैसे भी अस्थायी रूप से किसी अन्य छवि में वॉल्यूम मैप करने का प्रयास करें । कुछ ऐसा करो docker run --rm -it -v appdata:/var/www debian:buster-slim वॉल्यूम मैप के साथ डेबियन छवि के लिए एक इंटरैक्टिव सत्र शुरू करने के लिए । वह छवि रूट के रूप में चलने में चूक करती है, इसलिए आपको वॉल्यूम में अनुमतियों को बदलने/ठीक करने में सक्षम होना चाहिए । आप भी पास कर सकते हैं --user विकल्प जब आपके डॉकर निष्पादन को चलाते समय ।

यह पहले से ही स्वीकृत उत्तर में है, लेकिन आइए अभी भी इसे अलग से इंगित करें, अतिरिक्त जोर देने के साथ: आपको मूल रूप से नेवर चामोद 777 का उपयोग करना चाहिए - यह असुरक्षित और अनाड़ी है ।