내가 직면하고있는 문제는 내 장고 프로젝트가 정적 파일을 찾을 수 없다는 것입니다.왜 python manage.py collectstatic가 올바른 위치에 파일을 복사하지 않습니까?
나는 따라서 아주 잠시 동안이 문제를 고민하고, 지금 나는 문제 그러나이고, 나는 그것을를 해결하는 방법에 어떤 아이디어가 생각.
리얼 정적 파일 위치 :
- LS /code/jk/static/jk/css/main.css
- LS의 /code/jk/static/jk/js/main.js
하여 실행하는 경우 :
:RUN (python /code/jk/manage.py collectstatic --noinput)
나는이 나에게 잘못된 위치를 제공하는 것으로 나타났습니다 ...
61 static files copied to '/code/jk/jk/static', 2 unmodified.
...
경로에 중복 '/code/jk/jk/static'
이 있으며 변경 방법을 모릅니다.
settings.py
...
STATIC_DIR = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
STATICFILES_DIRS = [STATIC_DIR]
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')
MEDIA_DIR = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
MEDIA_ROOT = MEDIA_DIR
...
나는 다음과 같은 고정 표시기에 장고 응용 프로그램을 사용하고 있습니다 :
Dockerfile
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY . /code/
RUN (pip install -r reqirements.txt)
RUN (python /code/jk/manage.py migrate)
RUN (python /code/jk/manage.py collectstatic --noinput)
RUN (python /code/jk/manage.py migrate)
# clean packages
RUN apt-get clean
RUN rm -rf /var/cache/apt/archives/* /var/lib/apt/lists/*
ENTRYPOINT ["/code/jk/start_gunicorn.sh"]
start_gunicorn.sh
#!/bin/bash
cd /code/jk/
touch ./gunicorn.log
touch ./gunicorn-access.log
tail -n 0 -f ./gunicorn*.log &
#export DJANGO_SETTINGS_MODULE=projectx.settings
exec gunicorn jk.wsgi \
--bind 0.0.0.0:8000 \
--workers 3 \
--log-level=info \
--log-file=./gunicorn.log \
--access-logfile=./gunicorn-access.log \
"[email protected]"
아니요. 그는 'STATIC_DIR'이라고하는 것을 프로젝트 전체의 정적 소스로 올바르게 사용합니다. 그러나 웹 서버는'/ static'을 제공하는 방법을 모른다. – Melvyn
@Melvyn 나는 그의'STATIC_DIR'에 아무런 문제가 없다. 그러나 그것은 자산이 수집되는 곳을 정의하는'STATIC_ROOT'입니다. 저에게이 파일을 프로덕션 환경에서 제공하는 것은이 질문에서 논란이 아닌 것 같습니다. – vmonteco
안녕 얘들 아, 내가 STATIC_DIR 및 STATIC_ROOT에 대해 읽고 내가 부분적으로 모두 동의하고 또한 파일을 STATIC_ROOT에서 읽어야한다는 것을 이해합니다. Btw. 필수 파일'main.css'와'main.js'는 두 위치에 있습니다. 그래서 @Melvyn이 맞다고 생각합니다. 장고는 그 파일을 제공하는 방법을 모른다. 'STATIC_ROOT = os.path.join (BASE_DIR, 'static')'을 곧바로 시도 할 것입니다. – user2156115