شمود لا يعمل بشكل صحيح في عامل الميناء

أنا بناء صورة عامل الميناء لبلدي Symfony التطبيق وأنا بحاجة إلى إعطاء الإذن لخادم أباتشي للكتابة في ذاكرة التخزين المؤقت ومجلدات السجل

#DockerfileFROM php:7-apacheRUN apt-get update \&& apt-get install -y libicu-dev  freetds-common freetds-bin unixodbc \&& docker-php-ext-install intl mbstring \&& a2enmod rewriteCOPY app/php.ini /usr/local/etc/php/COPY app/apache2.conf /etc/apache2/apache2.confCOPY ./ /var/www/htmlRUN find /var/www/html/ -type d -exec chmod 755 {} \; RUN find /var/www/html/ -type f -exec chmod 644 {} \;RUN chmod -R 777 /var/www/html/app/cache /var/www/html/app/logs

عندما أقوم ببناء هذه الصورة مع docker build -t myname/symfony_apps:latest . وتشغيل الحاوية مع docker run -p 8080:80 myname/symfony_apps:latest.وغمرت المياه أباتشي السجل عن طريق الإذن نفى الأخطاء ، والشيء الغريب أن لقد راجعت مع ls -a والأذونات على ما يرام. وعندما أقوم بتشغيل شمود من باش الحاوية ، اختفت قضايا إذن أباتشي والتطبيق يعمل بشكل جيد

الحالة

تشغيل أوامر شمود من دوكيرفيل: يتم تغيير الأذونات ولكن أباتشي لا يزال يشكو من رفض الإذن.تشغيل شمود نفس الأوامر مع باش داخل الحاوية: يتم تغيير الأذونات والتطبيق الخاص بي قيد التشغيل

أي فكرة, أنا في عداد المفقودين شيء, ربما ينبغي لي أن أضيف المستخدم الجذر في مكان ما في دوكيرفيل ?

واجهت نفس المشكلة ويبدو أن هناك بعض الأخطاء في عامل الإرساء أو التراكب2 إذا تم إنشاء محتوى الدليل في طبقة واحدة وتم تغيير أذوناته في طبقة أخرى.

كحل بديل يمكنك نسخ المصادر إلى دليل مؤقت:

COPY . /src

ثم نقله إلى /var/www/html وأذونات الإعداد (في واحد RUN القيادة):

RUN rm -rf /var/www/html && mv /src /var/www/html &&\    find /var/www/html/ -type d -exec chmod 755 {} \; &&\    find /var/www/html/ -type f -exec chmod 644 {} \; &&\    chmod -R 777 /var/www/html/app/cache /var/www/html/app/logs

أيضا أنا خلقت قضية جيثب.

حاول إضافة :

USER root

عملت بالنسبة لي.

قذيفة الافتراضي من تشغيل في عامل الميناء هو / بن / ش وهذا هو المكان الأذونات لا يتم تعيين بشكل صحيح في الواقع لديه مشكلة.

ولكن يمكنك تغيير لمجرد استخدام / بن / باش بدلا من ذلك لإصلاح بسهولة ، لاحظ قبل وبعد سرد الدليل

Step 7/9 : RUN /bin/bash -c 'ls -la; chmod +x gitlab-properties-builder.sh; ls -la'---> Running in dc57ae77aa67drwxr-xr-x. 3 root root      103 Mar  8 17:56 .drwxr-xr-x. 1 root root       46 Mar  8 17:57 ..drwxr-xr-x. 2 root root        6 Mar  7 20:47 config-rw-r--r--. 1 root root     2340 Mar  7 21:20 gitlab-properties-builder.sh-rw-r--r--. 5 root root 57325770 Mar  5 14:39 gitlab-scm-collector-2.0.5-SNAPSHOT.jardrwxr-xr-x. 1 root root       42 Mar  8 17:56 .drwxr-xr-x. 1 root root       61 Mar  8 17:57 ..drwxr-xr-x. 2 root root        6 Mar  7 20:47 config-rwxr-xr-x. 1 root root     2340 Mar  7 21:20 gitlab-properties-builder.sh-rw-r--r--. 5 root root 57325770 Mar  5 14:39 gitlab-scm-collector-2.0.5-SNAPSHOT.jar---> 8b5de6e348d3

من المحتمل أن تكون هذه المشكلة نتيجة ل VOLUME تعريف داخل المنبع دوكيرفيل. عندما يتم تعريف وحدة تخزين في دوكيرفيل ، يمكنك إضافة ملفات مع COPY أو ADD الأمر مباشرة في الصورة. ومع ذلك ، أ RUN خط سوف:

  • قم بإنشاء حاوية مؤقتة باستخدام تعريف الصورة اعتبارا من النقطة الحالية لملف الإرساء
    • ستحتوي هذه الحاوية المؤقتة على وحدة تخزين مجهولة المصدر مثبتة كما أنت أو صورة أصل محددة داخل ملف الإرساء
    • سيتم تهيئة وحدة التخزين المجهولة من محتويات الصورة
  • سيتم تشغيل الأمر الخاص بك داخل الحاوية
    • إذا قمت بإدراج الدليل خلال هذا RUN الأمر ، سترى التغييرات المطبقة ، ولكن تم تطبيق هذه التغييرات على وحدة التخزين
  • عند اكتمال أمر التشغيل الخاص بك ، سيقوم عامل الميناء بالتقاط التغييرات على الحاوية
    • ويمكن رؤية هذه التغييرات مع docker diff إذا لم تقم بحذف الحاويات المؤقتة (يمكنك تشغيل بناء مع --rm=false أن يكون لهم البقاء)
    • لن تتضمن هذه التغييرات محتويات وحدة التخزين المجهولة لأنها غير موجودة داخل نظام ملفات الحاوية المؤقتة ، وحدات التخزين منفصلة

بسبب هذا السلوك ، لديك خيارات ل:

  1. يمكنك نسخ ملفاتك إلى دليل مختلف وتغيير الأذونات هناك
  2. يمكنك إصلاح الأذونات على المضيف الخاص بك حتى يتم نسخها باستخدام هذه الأذونات مباشرة
  3. يمكنك إزالة وحدة التخزين من أي من صورتك ، أو الحصول على الصورة الأولية لإزالة تعريف وحدة التخزين الخاصة بها ، أو يمكنك إعادة إنشاء نسختك الخاصة من الصورة الأولية دون تعريف وحدة التخزين وقاعدة صورك من ذلك

لاحظ أنه داخل الصور فب الحالية ، يبدو أن حجم قد أزيلت ، مما يعني أن لدينا على نحو فعال الخيار 3.

لقد أجريت للتو تجربة مع ما يلي:

FROM alpineLABEL MAINTAINER="YIMGA YIMGA Salathiel Genèse"RUN apk add --no-cache inotify-toolsCMD [ "./script.sh" ]WORKDIR /opt/app/COPY src/ /opt/app/RUN chmod a+x *.sh

وأنها تعمل فقط كبيرة.

ومع ذلك

عندما أتجاوز هذا الملف القابل للتنفيذ من خلال وحدات تخزين عامل الإرساء ، فإن execute إذن هو ببساطة مثل التراجع - تجاوز تقنيا إلى إذن الملف الأصلي.

الإصلاح لوضع ديف هو ببساطة ل chmod a+x yourfile من المضيف ، والتي سوف تكون موروثة في يؤلف حجم التركيب.

واخا… لقد قمت بتحرير السؤال :slight_smile:

أرى مساحة إضافية في الأمر الأخير الخاص بك (أنا على هاتفي ، لذلك لا يمكنني التأكد). كما يبدو أن مشكلة الإذن مع دليل السجل ، قم بتغيير السطر الأخير إلى:" `
تشغيل شمود-ر 777 / فار/ووو/هتمل / أب / مخبأ /فار/ووو/هتمل/أب / سجلات

كانت تلك المساحة الإضافية خطأ مطبعي

هل حل المشكلة?

أنا غير قادر على إعادة إنتاج مشكلتك. إذا كنت تستخدم دوكيرفيل الخاص بك وإعداد بعض الملفات وهمية محليا ، أذونات صحيحة وكل شيء يعمل فقط. يمكنني تشغيل حاوية والوصول إلى المحتوى عبر متصفح الويب. يمكنك تحديث سؤالك لتشمل رسائل خطأ محددة? هل أنت متأكد من تكوين أباتشي الخاص بك (‘أباتشي2.أسيوط’) لا يسبب مشكلة? هل الأخطاء تذهب بعيدا إذا لم تقم بتثبيت ’ أباتشي2.أسيوط’?

سيكون من المفيد رؤية أمر عامل الإرساء الذي يدير الصورة المدمجة.