لدي دليل مشروع مثل هذا:
|-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
لذلك أظن أن هذا الخطأ سيحدث أيضا عندما يقوم عامل الميناء ببناء ، ثم وفقا ل هذه الإجابة من سيرفيرفولت، حاولت تعديل دوكيرفيل إلى هذا:
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) ما هي أفضل طريقة لتحقيق ذلك? (إن وجدت)