Dgango + Nginx + Docker нет статических данных в канале администратора

Я пытаюсь запустить приложение django в docker (nginx, gunicorn ...) на локальной машине. Все в порядке, но я не вижу статических данных. В логах docker я вижу ошибку:

nginx_1   | 2022/01/06 00:52:32 [error] 28#28: *5 open() "/var/www/html/static/admin/css/responsive.css" failed (2: No such file or directory), client: 172.24.0.1, server: localhost, request: "GET /static/admin/css/responsive.css HTTP/1.1", host: "0.0.0.0", referrer: "http://0.0.0.0/admin/login/?next=/admin/"

Как я могу решить проблему?

Мой код

settings.py (я использую стандартные инструменты для работы со статическими данными)

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

nginx-conf.conf

upstream app {
    server django:8000;
}

server {
    listen 80;
    server_name localhost;

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

    location /static/ {
        alias /var/www/html/static/;
    }
}

docker-compose.yml

version: '3.9'

services:
  django:
    build: . # path to Dockerfile
    command: sh -c "gunicorn --bind 0.0.0.0:8000 potok.wsgi:application"
    volumes:
      - .:/project
      - static:/project/static
    expose:
      - 8000
    environment: 
      - DATABASE_URL=XXXX
      - DEBUG=1
  
  db:
    ...

  nginx:
    image: nginx:1.19.8-alpine
    depends_on: 
      - django
    ports: 
      - "80:80"
    volumes:
      - static:/var/www/html/static
      - ./nginx-conf.d/:/etc/nginx/conf.d

volumes:
    pg_data:
    static:

Collectstatic в docker помог мне (теперь у меня есть статические данные)

Решение:

sudo docker exec -ti potok-lk_django_1 sh
python manage.py  collectstatic

Как я могу решить проблему без этой команды? (или автоматизировать мое решение)

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