Почему Django Admin static не работает в nginx и docker?
Проблема в том, что когда я делаю docker-compose up
и захожу на свой сайт по адресу localhost/admin
в ngnix, я не вижу стандартных стилей администрирования django.
nginx.conf
location /static/ {
autoindex on;
alias movies_admin/staticfiles/;
}
components/static.py
from pathlib import Path
import os
BASE_DIR = Path(__file__).resolve().parent.parent
STATIC_URL = 'static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
STATIC_ROOT = 'movies_admin/staticfiles/'
docker-compose.yml
version: '3.8'
services:
django:
build:
context: .
volumes:
- "./movies_admin:/movies_admin"
- "./movies_admin:/movies_admin/staticfiles/"
environment:
- DB_HOST=database
- DB_NAME=movies_database
- DB_USER=app
- DB_PASSWORD=123qwe
- SECRET_KEY='django-insecure-8h%wg+drqmqjkw$8wm7#)#%*fb3b%(-e!-kbdth^#9u)23u!48'
command:
sh -c "uwsgi --ini /movies_admin/uwsgi.ini"
depends_on:
- database
database:
image: postgres:16
environment:
- DB_NAME=movies_database
- DB_USER=app
- DB_PASSWORD=123qwe
volumes:
- $HOME/postgresql/data:/var/lib/postgresql/data
nginx:
image: nginx:latest
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- ./movies_admin:/movies_admin/staticfiles/
ports:
- "80:80"
depends_on:
- django
Dockerfile
FROM python:3.10.0-alpine
RUN apk add postgresql-client build-base postgresql-dev linux-headers pcre-dev
WORKDIR /movies_admin
COPY requirements.txt .
RUN pip install -r requirements.txt --no-cache-dir
EXPOSE 8000
COPY movies_admin .
RUN python3 manage.py collectstatic --no-input
Я прочитал все доступные учебники и понял алгоритм:
- Настройте статические файлы в
settings.py
- В
Dockerfile
collectstatic - Смонтируйте путь к статическим файлам в тома
nginx
иdjango
контейнеров .
- Передайте путь к
staticfiles
вnginx.conf
для настройки маршрутизации, если был запрошен статический файл
Несмотря на все это, я не вижу стилей в админке django. В чем может быть проблема?