Как загрузить статические файлы приложения django + nginx + gunicorn с помощью докера? - PullRequest
0 голосов
/ 18 марта 2019

Я не могу заставить мои статические файлы появиться.Я пробовал различные настройки и конфигурации каталогов и так далее, но они просто отображаются как 404.

Структура каталогов приложения

.
├── config
│   └── nginx
│       └── conf.d
│           └── local.conf
├── docker-compose.yml
├── Dockerfile
├── aggre
│   ├── aggre
│   └── manage.py
|   └── static
├── requirements.txt

Я включил static_url и root в settings.pyи выглядит как

STATIC_URL = '/static/'

STATICFILES_DIRS = [os.path.join(BASE_DIR),'static']

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

Dockerfile

FROM python:3.6
ENV PYTHONUNBUFFERED 1
RUN mkdir -p /opt/services/django/src
WORKDIR /opt/services/django/src
COPY requirements.txt /tmp/
RUN pip install --requirement /tmp/requirements.txt
COPY . /tmp/
COPY . /opt/services/django/src
RUN python aggre/manage.py collectstatic --no-input  # <-- here
CMD exec /bin/bash -c "trap : TERM INT; sleep infinity & wait"
EXPOSE 8000
ADD . /opt/services/django/src
CMD ["gunicorn", "--chdir", "aggre", "--bind", ":8000", "aggre.wsgi:application"]

docker-compose.yml

version: '2'
services:
  djangoapp:
    build: .
    volumes:
      - .:/opt/services/django/src
      - static_volume:/opt/services/django/static/
    networks:
      - nginx_network

  nginx:
    image: nginx:1.13
    ports:
      - "80:80"
    volumes:
      - ./config/nginx/conf.d:/etc/nginx/conf.d
      - static_volume:/opt/services/django/static/ 
    depends_on:
      - djangoapp
    networks:
      - nginx_network

networks:
  nginx_network:
    driver: bridge

volumes:
  static_volume: 

local.conf

server {
    listen 80;
    server_name ***.***.io;

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

    location /static {
        alias /opt/services/django/static;
    }
}

Iя собираю и работаю с использованием **

docker-compose up --built

Приложение успешно запускается, но статические файлы не загружаются.Я получаю

"/ opt / services / django / src / static / js / bootstrap.js" (2: Нет такого файла или каталога)

**

1 Ответ

0 голосов
/ 18 марта 2019
  • в urls.py add

    from django.contrib.staticfiles.urls import staticfiles_urlpatterns
    

, затем добавьте в urlpatterns, например:

urlpatterns = [
YOUR_CONFIG 
] + staticfiles_urlpatterns()

в обновлении конфигурации Nginx, например

location /static {
 root /opt/services/django; 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...