Неконтейнерный Nginx не обслуживает файлы из докер-контейнера django

Я так близок к решению этой проблемы, что это на самом деле болезненно, и поэтому любая помощь была бы потрясающей.

Новичок в Django. Новичок в Nginx. Новичок в Docker. Но люблю сложные задачи. Имею виртуальный сервер на DigitalOcean.

После ряда руководств и чтения бесконечной документации у меня получилось следующее, проблема в том, что nginx обслуживает wesbite, но не staticfiles. Я уверен, что это как-то связано с моим settings.py или nginx.conf, но не могу сказать, что именно.

settings.py

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "devops", "staticfiles")

STATICFILES_DIRS = [
    BASE_DIR / "static",
]

MEDIA_URL = "/mediafiles/"
MEDIA_ROOT = os.path.join(BASE_DIR, "devops", "mediafiles")

docker-compose

Если я все делаю правильно, мне нужно, чтобы мои статические файлы находились вне контейнера, чтобы автономный nginx мог их обслуживать. Я делаю это таким образом, поскольку, как мне кажется, я читал, что проще настроить LetsEncrypt и certbot с nginx вне контейнера, чем внутри.

version: '3.7'

services:
  web:
    image: <dockerimage>
    container_name: <name>
    command: gunicorn <site>.wsgi:application --bind 0.0.0.0:8000 --workers 5
    volumes:
      - $HOME/devops/staticfiles:/home/app/web/staticfiles
      - $HOME/devops/mediafiles:/home/app/web/mediafiles
    ports:
      - 8000:8000
    env_file:
      - .env.docker
    depends_on:
      - db
    labels:
      - com.centurylinklabs.watchtower.enable=true
    restart: "on-failure"
  db:
    image: index.docker.io/postgres:12.0-alpine
    container_name: db
    env_file:
      - .env.docker
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    restart: "on-failure"

volumes:
  postgres_data:
  logs:

nginx.conf

Это хранится в sites-available, что, опять же, кажется способом заставить это работать.

upstream maffsguru {
    server web:8000;
}

server {
        listen 80;
        listen [::]:80;

        server_name 128.199.80.210 personalityfirst.com www.personalityfirst.com;
        client_max_body_size 4G;

        access_log /home/maffsguru/logs/personalityfirst/nginx-access.log;
        error_log /home/maffsguru/logs/personalityfirst/nginx-error.log;

        location /static/ {
                alias   /home/maffsguru/devops/staticfiles/;
        }

        location /media/ {
                alias   /home/maffsguru/devops/mediafiles/;
        }

        location / {
                proxy_pass http://localhost:8000;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $host;
                proxy_redirect off;
        }
}

Заранее спасибо за подсказку в правильном направлении. Очень ценю это. Чтобы попасть сюда, мне потребовалось много часов (веселых!) обучения... но я просто не могу переступить черту.

Вернуться на верх