문제

dokku를 사용하여 Django 앱을 배포할 때 다음 오류가 발생합니다.

Collectstatic configuration error. To debug, run:
$ heroku run python ./manage.py collectstatic --noinput

나는 달릴 방법을 찾지 못했다 heroku run python ./manage.py collectstatic --noinput dokku 컨테이너의 경우, 하지만 시도할 때 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'

생성된 Docker 컨테이너 내에서 미디어 경로 /app/media/와 정적 경로 /app/static/을 만드는 /app 아래에서 애플리케이션을 찾을 수 있습니다.

불행하게도 git에 커밋된 미디어 및 정적 폴더가 없으면 /app 아래에 자동으로 생성되지 않습니다.

git에서는 빈 폴더를 커밋하는 것을 허용하지 않으므로(파일만 커밋) 프로젝트에서 다음을 수행합니다.

mkdir media static touch media/.dir touch static/.dir git add media/.dir static/.dir git commit -m 'Make media and static directories'

'touch' 명령은 빈 파일을 생성한 다음 새로 생성된 두 파일을 'git add'하고 체크인합니다.

이제 푸시하면 미디어와 정적 파일을 포함하는 디렉터리가 생성됩니다.'git push'를 할 때마다 새로운 컨테이너가 생성되고 이전 컨테이너는 파기된다는 점을 명심하세요.정적 파일에는 문제가 되지 않지만, 미디어를 다른 곳에 저장하지 않으면 미디어가 손실됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top