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