Как настроить Docker-compose для корректного доступа к статическим файлам Django?

Как настроить Docker-compose для корректной работы со статическими файлами Django при отключенном режиме отладки (debug = false), особенно касательно стилей, JS-скриптов и изображений, хранящихся в папке static? При включенном режиме отладки (debug = true) все работает корректно. Обратите внимание, что в данном случае не используется Nginx.
  • 11 апреля 2024 г. 10:59
Ответы на вопрос 1
Для корректной работы со статическими файлами Django при отключенном режиме отладки (debug = false) можно использовать следующий подход:

1. Создайте папку static в корневой директории вашего проекта Django, если ее еще нет.

2. Убедитесь, что в файле settings.py вашего Django проекта есть следующие настройки:
```python
import os

DEBUG = os.environ.get('DEBUG') == 'True'
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
```

3. В Dockerfile добавьте команды для копирования статических файлов в папку static:
```Dockerfile
FROM python:3.9
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
RUN python manage.py collectstatic --noinput
```

4. В файле docker-compose.yml добавьте volumes для монтирования папки static внутрь контейнера и expose для открытия порта, если он используется:
```yaml
version: '3'

services:
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - ./static:/code/static
    expose:
      - "8000"
```

5. Убедитесь, что переменная DEBUG в окружении контейнера задана как 'False'.

6. Перезапустите контейнеры для применения изменений:
```bash
docker-compose down
docker-compose up
```

Теперь при отключенном режиме отладки (debug = false) статические файлы должны корректно отображаться при запуске Django приложения в Docker контейнере.
Похожие вопросы