Обслуживание статических и мультимедийных файлов Django с помощью Docker и Nginx
У меня есть система, которую я пытаюсь докеризировать и настроить конвейер CI/CD, но она не обслуживает статические или мультимедийные файлы в продакшене (обслуживает на локальном).
Производственный docker-compose файл выглядит следующим образом:
version: "3.8"
services:
backend:
build:
context: ./backend
dockerfile: Dockerfile.prod
image: "${BACKEND_IMAGE}"
volumes:
- static_volume:/backend/assets
- media_volume:/backend/media
expose:
- 8000
env_file: .env
depends_on:
- db
nginx:
build:
context: ./nginx
dockerfile: Dockerfile.prod
image: "${NGINX_IMAGE}"
restart: unless-stopped
ports:
- 80:80
volumes:
- static_volume:/backend/assets
- media_volume:/backend/media
depends_on:
- backend
- db
volumes:
static_volume:
media_volume:
nginx.prod.conf:
upstream backend {
server backend:8000;
}
server {
listen 80;
listen [::]:80;
location / {
proxy_pass http://backend;
proxy_set_header Host $http_host;
}
location /static/ {
alias /backend/assets/;
}
location /media/ {
alias /backend/media/;
}
}
Django settings.py:
STATIC_DIR = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'assets/')
STATICFILES_DIRS = [STATIC_DIR, ]
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
MEDIA_URL = '/media/'
Статический каталог perms:
/backend # ls -la
drwxr-xr-x 9 root root 4096 Feb 9 22:49 assets
Я получаю 404 Not Found для статических и медиа файлов. Буду признателен за помощь в определении того, что я делаю неправильно...