Во время разработки мне нравится развертывать файлы Django stati c в максимально приближенной к работе настройке. Для этого я обертываю Django бэкэнд в изображение (Dockerfile
), а также JS и бэкэнд Django stati c файлов в другое изображение вместе с nginx
, настроенным как веб-сервер (Dockerfile_nginx
). Настройка выглядит следующим образом:
Структура файловой системы:
<projekt-repo>
/frontend
/backend
/static (generated with python manage.py collectstatic)
settings.py
manage.py
nginx.conf
Dockerfile
Dockerfile_nginx
settings.py
:
STATIC_ROOT = os.path.join(BASE_DIR, "backend/static")
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")]
nginx.conf
:
server {
listen 0.0.0.0:8080;
root /var/www;
location / {
try_files $uri $uri/ /index.html;
}
}
server {
listen 0.0.0.0:8000;
root /var/www/django;
location /static/ {
autoindex on;
alias /var/www/django/static/;
}
}
Dockerfile_nginx
:
FROM nginx:1.17.8-alpine
COPY nginx.conf /etc/nginx/conf.d/nginx.conf
COPY edge_frontend/www /var/www
COPY edge_backend/static /var/www/django/static
Если я запускаю приложение и пытаюсь войти через администраторский сайт Django (localhost:8000/admin
), сайт не оформлен должным образом, и выходные данные журнала отображаются
backend | Not Found: /static/admin/css/base.css
backend | Not Found: /static/admin/css/login.css
backend | Not Found: /static/admin/css/responsive.css
backend | Not Found: /favicon.ico
backend | Not Found: /static/admin/css/base.css
backend | Not Found: /static/admin/css/login.css
backend | Not Found: /static/admin/css/responsive.css
backend | Not Found: /favicon.ico
Очевидно, что есть некоторые несоответствия в настройке, которые я не могу определить прямо сейчас? Может кто-нибудь помочь?