fugro
@fugro
Начинающий кодер

В какую папку Django собирает staticfiles?

Помогите рабозбраться со статическими файлами в Django и Nginx. Уже окончательно запутался.
Деплою джанго приложение через gunicorn и nginx
Следовал вот этому туториалу

Докер файл
spoiler

FROM python:3.7-stretch

ENV PYTHONUNBUFFERED 1
ENV PYTHONDONTWRITEBYTECODE 1

# Update base container install
RUN apt-get update
RUN apt-get upgrade -y

RUN mkdir /var/code
RUN mkdir /var/code/static
WORKDIR /var/code

# install dependencies
RUN pip install --upgrade pip
ADD requirements.txt /var/code/
RUN pip install -r requirements.txt

ADD . /var/code/



settings.py
spoiler
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'lrm', 'static'),
    os.path.join(BASE_DIR, 'calcdist', 'static'),
    os.path.join(BASE_DIR, "static"),
)


docker-compose.prod.yml
spoiler

version: '3.7'

services:
  web:
    container_name: web
    build: .
    command: gunicorn geoApp.wsgi:application --bind 0.0.0.0:8000
    volumes:
      - static_volume:/var/code/static
    expose:
      - 8000
    env_file:
      - ./prod.env
  nginx:
    container_name: nginx
    image: nginx:1.17.8-alpine
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
    ports:
      - 8989:8989
    depends_on:
      - web

volumes:
  static_volume:


nginx config
spoiler

upstream application {
    server web:8000;
}

server {

    listen 8989;

    server_name localhost;

    location / {
        proxy_pass http://application;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }

    location /static/ {
        alias /var/code/static/;
    }

}



Команду collectstatic выполнял двумя способами. Ни один не сработал
1. docker-compose -f docker-compose.prod.yml exec web python manage.py collectstatic --no-input --clear
2. Через указание в Докер файле ENTRYPOINT ["/var/code/entrypoint.prod.sh"], в котором та же команда python manage.py collectstatic --no-input --clear

Сервер nginx работает запросы идут через него. А вот статических фалов не видит. Ошибка 404
Подскажите плиз, где я ошибся, башка кипит.
  • Вопрос задан
  • 244 просмотра
Решения вопроса 1
fugro
@fugro Автор вопроса
Начинающий кодер
Проблема была решена следующим образом.
1. collectstatic в папку джанго проекта
2. В файле docker-compose добавил в образ nginx папку с файлами через volume

Получилось следующее
version: '3.7'

services:
  web:
    container_name: web
    build: .
    command: gunicorn geoApp.wsgi:application --bind 0.0.0.0:8000
    volumes:
      - /var/code/static
    expose:
      - 8000
    env_file:
      - ./prod.env
  nginx:
    container_name: nginx
    image: nginx:1.17.8-alpine
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
      - ./static:/var/code/static
    ports:
      - 8989:8989
    depends_on:
      - web
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы