خطأ التكوين كوليكتستاتيك عند نشر جانغو التطبيق مع دوكو
-
21-12-2019 - |
سؤال
عند نشر التطبيق جانغو باستخدام دوكو أنا الحصول على الخطأ التالي
Collectstatic configuration error. To debug, run:
$ heroku run python ./manage.py collectstatic --noinput
لم أجد طريقة للركض heroku run python ./manage.py collectstatic --noinput
لحاوية دوكو ، ولكن عندما أحاول dokku run my app python ./manage.py collectstatic --noinput
, ، يتم نسخ الملفات الثابتة بنجاح إلى STATIC_ROOT
مجلد ولا توجد رسالة خطأ معينة.
يمكنني حل المشكلة عن طريق وضع collectstatic
القيادة في Procfile
:
web: python manage.py collectstatic --noinput ; gunicorn myapp.wsgi
ومع ذلك ، أود أن أعرف ما الذي تسبب في المشكلة وكيف يمكن تصحيحها.أي أفكار?
المحلول
يجب أن يكون لديك أربعة إعدادات في settings.py ملف يسمى MEDIA_ROOT
, MEDIA_URL
, STATIC_ROOT
و STATIC_URL
.
أنا وضعت الألغام مثل ذلك:
MEDIA_ROOT = 'media'
STATIC_ROOT = 'static'
MEDIA_URL = '/media'
STATIC_URL = '/static'
داخل حاوية عامل الميناء التي يتم إنشاؤها ، ستجد التطبيق الخاص بك ضمن /التطبيق الذي يجعل مسار الوسائط /التطبيق/الوسائط/ والمسار الثابت /التطبيق/الثابت/.
للأسف إذا لم يكن لديك وسائل الإعلام ومجلد ثابت ارتكبت في بوابة ، فإنه لن تحصل على خلق تحت /التطبيق تلقائيا.
منذ جيت لا يسمح لك لارتكاب مجلد فارغ (يرتكب فقط الملفات) ، أفعل ما يلي في مشاريعي:
mkdir media static
touch media/.dir
touch static/.dir
git add media/.dir static/.dir
git commit -m 'Make media and static directories'
الأمر 'اللمس' بإنشاء ملف فارغ ، ثم كنت 'بوابة إضافة' اثنين من الملفات التي تم إنشاؤها حديثا والتحقق منها في.
الآن عند الضغط ، ستكون الدلائل موجودة لاحتواء الوسائط والملفات الثابتة.فقط نأخذ في الاعتبار أنه في كل مرة كنت 'دفع بوابة' ، يتم إنشاء حاوية جديدة ، ويتم تدمير القديم.في حين أن هذه ليست مشكلة لملفاتك الثابتة ، سيتم فقد الوسائط الخاصة بك إلا إذا قمت بتخزينها في مكان آخر.