Помогите рабозбраться со статическими файлами в 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
spoilerSTATIC_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
Подскажите плиз, где я ошибся, башка кипит.