أباتشي على عامل الميناء لا يمكن الكتابة إلى نظام الملفات حجم

لقد بنيت صورة لتشغيل أباتشي مع وزارة الدفاع ، لتطوير تمديد الماجنتو. الماجنتو يحتاج إلى الكتابة إلى الجاسوس: فإنه يحتفظ الملفات في /srv/magento/var/ لذاكرة التخزين المؤقت والإبلاغ عن الأخطاء وبعض الميزات الأخرى. و ويبوروت على هذه الصورة هو حجم عامل الميناء ، و أباتشي لا يعمل كجذر ، لذلك لا يمكن الكتابة إلى نظام الملفات ، لذلك فشل الماجنتو.

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

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

النظر في هذه الحالة سبيل المثال:

$ cd $(mktemp -dt$(date +%s))$ docker run -d -p 80:80 -v "$PWD:/srv/magento" kojiromike/magento_apache$ cat > index.php <<PHP<?php file_put_contents('foo', 'bar');PHP$ wget -SO/dev/null http://$(boot2docker ip 2>/dev/null)/index.php--2014-12-15 13:33:59--  http://192.168.59.103/index.phpConnecting to 192.168.59.103:80... connected.HTTP request sent, awaiting response...   HTTP/1.1 200 OK  Date: Mon, 15 Dec 2014 17:18:49 GMT  Server: Apache/2.2.22 (Debian)  X-Powered-By: PHP/5.4.35-0+deb7u2  Vary: Accept-Encoding  Content-Length: 0  Keep-Alive: timeout=5, max=100  Connection: Keep-Alive  Content-Type: text/html    The file is already fully retrieved; nothing to do.$ ls # Expecting 'foo' to existindex.php$ docker exec -ti $(docker ps -lq) tail -n 4 /var/log/apache2/error.log[Mon Dec 15 17:18:49 2014] [error] [client 192.168.59.3] PHP Warning:  file_put_contents(foo): failed to open stream: Permission denied in /srv/magento/index.php on line 1[Mon Dec 15 17:18:49 2014] [error] [client 192.168.59.3] PHP Stack trace:[Mon Dec 15 17:18:49 2014] [error] [client 192.168.59.3] PHP   1. {main}() /srv/magento/index.php:0[Mon Dec 15 17:18:49 2014] [error] [client 192.168.59.3] PHP   2. file_put_contents() /srv/magento/index.php:1

على فيرتثلبوإكس ، على الأقل ، على ما يبدو لا يمكنك تغيير ملكية سهم. منذ بوت 2 دوكر يستخدم فيرتثلبوإكس لمعظم المطورين أحاول دعم ، لا أستطيع أن أتوقع أن حل مشكلتي مع chown. مشكلتي لن تكون صعبة إذا استطعت استخدامها حاويات حجم عامل الميناء, لكن هذا يعوق استخدام المطور. لذلك جئت مع حل آخر: كتبت السيناريو الذي يدير أباتشي كما أيا كان المستخدم يملك ويبوروت.

اللحوم من هو:

#!/bin/bash...adduser --system --uid=$(stat -c %u .) "$owner"echo "APACHE_RUN_USER=$owner" >> /etc/apache2/envvars

إذا كنت لا تستطيع الفوز 'م ، والانضمام' م.