Files
2024-test-rosmorport/.idea/copilotDiffState.xml
erjemin 6e7a4c52e0 feat: Добавлена поддержка WhiteNoise для обслуживания статических файлов
- Конфигурация collectstatic в settings.py:
  * STATIC_ROOT = staticfiles/ для собранных файлов
  * STATICFILES_DIRS указывает на public/static
  * CompressedManifestStaticFilesStorage для production
  * WhiteNoiseMiddleware в MIDDLEWARE
  * WHITENOISE_ROOT для подачи файлов из /public
- Исправлены пути в settings.py для правильной работы БД
- Обновлена конфигурация urls.py для отдачи статики
- Добавлена зависимость whitenoise ^6.6.0 в pyproject.toml
- Обновлен .gitignore (раскомментирована staticfiles/)
Статика работает в dev режиме и готова для production.
2026-03-31 16:51:48 +03:00

27 lines
14 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CopilotDiffPersistence">
<option name="pendingDiffs">
<map>
<entry key="$PROJECT_DIR$/docker-compose.prod.yml">
<value>
<PendingDiffInfo>
<option name="filePath" value="$PROJECT_DIR$/docker-compose.prod.yml" />
<option name="originalContent" value="# docker-compose.prod.yml для production развертывания проекта rosmorport_tsts&#10;# Использование: docker-compose -f docker-compose.prod.yml up -d&#10;&#10;version: '3.9'&#10;&#10;services:&#10; # Django приложение в production&#10; web:&#10; # Строим образ из Dockerfile в текущей директории&#10; build:&#10; context: .&#10; dockerfile: Dockerfile&#10; &#10; # Имя контейнера&#10; container_name: rosmorport_web_prod&#10; &#10; # Переменные окружения для production&#10; environment:&#10; - DOCKER_ENV=1&#10; - DEBUG=False&#10; - ALLOWED_HOSTS=localhost,127.0.0.1,0.0.0.0,web,pet-clones.cocorico.ru&#10; - DB_ENGINE=django.db.backends.postgresql&#10; - DB_HOST=db&#10; - DB_PORT=5432&#10; - DB_NAME=${POSTGRES_DB:-rosmorport_db}&#10; - DB_USER=${POSTGRES_USER:-postgres}&#10; - DB_PASSWORD=${POSTGRES_PASSWORD:-postgres}&#10; - PYTHONUNBUFFERED=1&#10; &#10; # Тома для медиа, статики и БД&#10; volumes:&#10; - public_media:/app/public/media&#10; - public_static:/app/public/static&#10; - database:/app/database&#10; - ./logs:/app/logs&#10; &#10; # Перенаправляем порты&#10; ports:&#10; - &quot;8000:8000&quot;&#10; &#10; # Зависимость от базы данных&#10; depends_on:&#10; db:&#10; condition: service_healthy&#10; &#10; # Политика перезапуска&#10; restart: unless-stopped&#10; &#10; # Ограничения ресурсов&#10; deploy:&#10; resources:&#10; limits:&#10; cpus: '1'&#10; memory: 512M&#10; reservations:&#10; cpus: '0.5'&#10; memory: 256M&#10; &#10; # PostgreSQL база данных для production&#10; db:&#10; # Используем официальный образ PostgreSQL&#10; image: postgres:16-alpine&#10; container_name: rosmorport_db_prod&#10; &#10; # Переменные окружения&#10; environment:&#10; - POSTGRES_DB=${POSTGRES_DB:-rosmorport_db}&#10; - POSTGRES_USER=${POSTGRES_USER:-postgres}&#10; - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-postgres}&#10; &#10; # Том для хранения данных БД&#10; volumes:&#10; - postgres_data:/var/lib/postgresql/data&#10; &#10; # Портов не открываем - доступ только изнутри контейнеров&#10; # ports:&#10; # - &quot;5432:5432&quot;&#10; &#10; # Проверка здоровья сервиса&#10; healthcheck:&#10; test: [&quot;CMD-SHELL&quot;, &quot;pg_isready -U ${POSTGRES_USER:-postgres}&quot;]&#10; interval: 10s&#10; timeout: 5s&#10; retries: 5&#10; &#10; # Политика перезапуска&#10; restart: unless-stopped&#10; &#10; # Ограничения ресурсов&#10; deploy:&#10; resources:&#10; limits:&#10; cpus: '1'&#10; memory: 1G&#10; reservations:&#10; cpus: '0.5'&#10; memory: 512M&#10; &#10; # Nginx для reverse proxy (опционально)&#10; # nginx:&#10; # image: nginx:alpine&#10; # container_name: rosmorport_nginx&#10; # volumes:&#10; # - ./config/nginx.conf:/etc/nginx/nginx.conf:ro&#10; # - django_staticfiles:/app/static:ro&#10; # - django_mediafiles:/app/media:ro&#10; # ports:&#10; # - &quot;80:80&quot;&#10; # - &quot;443:443&quot;&#10; # depends_on:&#10; # - web&#10; # restart: unless-stopped&#10;&#10;# Именованные тома для хранения данных&#10;volumes:&#10; postgres_data:&#10; driver: local&#10; public_media:&#10; driver: local&#10; public_static:&#10; driver: local&#10; database:&#10; driver: local&#10;&#10;# Сеть для сервисов&#10;networks:&#10; default:&#10; name: rosmorport_network&#10; driver: bridge&#10;&#10;" />
<option name="updatedContent" value="# docker-compose.prod.yml для production развертывания проекта rosmorport_tsts&#10;# Использование: docker-compose -f docker-compose.prod.yml up -d&#10;&#10;version: '3.9'&#10;&#10;services:&#10; # Django приложение в production&#10; web:&#10; # Строим образ из Dockerfile в текущей директории&#10; build:&#10; context: .&#10; dockerfile: Dockerfile&#10; &#10; # Имя контейнера&#10; container_name: rosmorport_web_prod&#10; &#10; # Переменные окружения для production&#10; environment:&#10; - DOCKER_ENV=1&#10; - DEBUG=False&#10; - ALLOWED_HOSTS=localhost,127.0.0.1,0.0.0.0,web,pet-clones.cocorico.ru&#10; - DB_ENGINE=django.db.backends.postgresql&#10; - DB_HOST=db&#10; - DB_PORT=5432&#10; - DB_NAME=${POSTGRES_DB:-rosmorport_db}&#10; - DB_USER=${POSTGRES_USER:-postgres}&#10; - DB_PASSWORD=${POSTGRES_PASSWORD:-postgres}&#10; - PYTHONUNBUFFERED=1&#10; &#10; # Тома для медиа, статики и БД&#10; volumes:&#10; - public_media:/app/public/media&#10; - public_static:/app/public/static&#10; - database:/app/database&#10; &#10; # Перенаправляем порты&#10; ports:&#10; - &quot;8000:8000&quot;&#10; &#10; # Зависимость от базы данных&#10; depends_on:&#10; db:&#10; condition: service_healthy&#10; &#10; # Политика перезапуска&#10; restart: unless-stopped&#10; &#10; # Ограничения ресурсов&#10; deploy:&#10; resources:&#10; limits:&#10; cpus: '1'&#10; memory: 512M&#10; reservations:&#10; cpus: '0.5'&#10; memory: 256M&#10; &#10; # PostgreSQL база данных для production&#10; db:&#10; # Используем официальный образ PostgreSQL&#10; image: postgres:16-alpine&#10; container_name: rosmorport_db_prod&#10; &#10; # Переменные окружения&#10; environment:&#10; - POSTGRES_DB=${POSTGRES_DB:-rosmorport_db}&#10; - POSTGRES_USER=${POSTGRES_USER:-postgres}&#10; - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-postgres}&#10; &#10; # Том для хранения данных БД&#10; volumes:&#10; - postgres_data:/var/lib/postgresql/data&#10; &#10; # Портов не открываем - доступ только изнутри контейнеров&#10; # ports:&#10; # - &quot;5432:5432&quot;&#10; &#10; # Проверка здоровья сервиса&#10; healthcheck:&#10; test: [&quot;CMD-SHELL&quot;, &quot;pg_isready -U ${POSTGRES_USER:-postgres}&quot;]&#10; interval: 10s&#10; timeout: 5s&#10; retries: 5&#10; &#10; # Политика перезапуска&#10; restart: unless-stopped&#10; &#10; # Ограничения ресурсов&#10; deploy:&#10; resources:&#10; limits:&#10; cpus: '1'&#10; memory: 1G&#10; reservations:&#10; cpus: '0.5'&#10; memory: 512M&#10; &#10; # Nginx для reverse proxy (опционально)&#10; # nginx:&#10; # image: nginx:alpine&#10; # container_name: rosmorport_nginx&#10; # volumes:&#10; # - ./config/nginx.conf:/etc/nginx/nginx.conf:ro&#10; # - django_staticfiles:/app/static:ro&#10; # - django_mediafiles:/app/media:ro&#10; # ports:&#10; # - &quot;80:80&quot;&#10; # - &quot;443:443&quot;&#10; # depends_on:&#10; # - web&#10; # restart: unless-stopped&#10;&#10;# Именованные тома для хранения данных&#10;volumes:&#10; postgres_data:&#10; driver: local&#10; public_media:&#10; driver: local&#10; public_static:&#10; driver: local&#10; database:&#10; driver: local&#10;&#10;# Сеть для сервисов&#10;networks:&#10; default:&#10; name: rosmorport_network&#10; driver: bridge&#10;&#10;" />
</PendingDiffInfo>
</value>
</entry>
<entry key="$PROJECT_DIR$/docker-compose.yml">
<value>
<PendingDiffInfo>
<option name="filePath" value="$PROJECT_DIR$/docker-compose.yml" />
<option name="originalContent" value="# docker-compose.yml для локальной разработки проекта rosmorport_tsts&#10;version: '3.9'&#10;&#10;services:&#10; # Django приложение&#10; web:&#10; # Строим образ из Dockerfile в текущей директории&#10; build:&#10; context: .&#10; dockerfile: Dockerfile&#10; &#10; # Имя контейнера&#10; container_name: rosmorport_web&#10; &#10; # Переменные окружения для разработки&#10; environment:&#10; - DOCKER_ENV=1&#10; - DEBUG=True&#10; - ALLOWED_HOSTS=localhost,127.0.0.1,0.0.0.0,web&#10; - DB_ENGINE=django.db.backends.sqlite3&#10; - DB_NAME=/app/db.sqlite3&#10; - PYTHONUNBUFFERED=1&#10; &#10; # Монтируем текущую директорию для разработки&#10; volumes:&#10; - .:/app&#10; - ./public/static:/app/public/static&#10; - ./public/media:/app/public/media&#10; - ./database:/app/database&#10; - ./logs:/app/logs&#10; &#10; # Перенаправляем порты&#10; ports:&#10; - &quot;8000:8000&quot;&#10; &#10; # Команда для запуска в режиме разработки&#10; command: &gt;&#10; sh -c &quot;python rosmorport_tsts/manage.py migrate &amp;&amp;&#10; python rosmorport_tsts/manage.py collectstatic --noinput &amp;&amp;&#10; python rosmorport_tsts/manage.py runserver 0.0.0.0:8000&quot;&#10; &#10; # Зависимости (если будут другие сервисы)&#10; # depends_on:&#10; # - db&#10; &#10; # Сохраняем контейнер в запущенном состоянии при ошибках&#10; stdin_open: true&#10; tty: true&#10; &#10; # Опционально: PostgreSQL база данных для продакшена&#10; # db:&#10; # image: postgres:16-alpine&#10; # container_name: rosmorport_db&#10; # environment:&#10; # - POSTGRES_DB=rosmorport_db&#10; # - POSTGRES_USER=postgres&#10; # - POSTGRES_PASSWORD=postgres&#10; # volumes:&#10; # - postgres_data:/var/lib/postgresql/data&#10; # ports:&#10; # - &quot;5432:5432&quot;&#10; # healthcheck:&#10; # test: [&quot;CMD-SHELL&quot;, &quot;pg_isready -U postgres&quot;]&#10; # interval: 10s&#10; # timeout: 5s&#10; # retries: 5&#10;&#10;# Именованные тома для хранения данных&#10;volumes:&#10; django_staticfiles:&#10; driver: local&#10; django_mediafiles:&#10; driver: local&#10; # postgres_data:&#10; # driver: local&#10;&#10;# Опционально: сеть для сервисов&#10;networks:&#10; default:&#10; name: rosmorport_network&#10; driver: bridge&#10;&#10;" />
<option name="updatedContent" value="# docker-compose.yml для локальной разработки проекта rosmorport_tsts&#10;version: '3.9'&#10;&#10;services:&#10; # Django приложение&#10; web:&#10; # Строим образ из Dockerfile в текущей директории&#10; build:&#10; context: .&#10; dockerfile: Dockerfile&#10; &#10; # Имя контейнера&#10; container_name: rosmorport_web&#10; &#10; # Переменные окружения для разработки&#10; environment:&#10; - DOCKER_ENV=1&#10; - DEBUG=True&#10; - ALLOWED_HOSTS=localhost,127.0.0.1,0.0.0.0,web&#10; - DB_ENGINE=django.db.backends.sqlite3&#10; - DB_NAME=/app/db.sqlite3&#10; - PYTHONUNBUFFERED=1&#10; &#10; # Монтируем текущую директорию для разработки&#10; volumes:&#10; - .:/app&#10; - ./public/static:/app/public/static&#10; - ./public/media:/app/public/media&#10; - ./database:/app/database&#10; &#10; # Перенаправляем порты&#10; ports:&#10; - &quot;8000:8000&quot;&#10; &#10; # Команда для запуска в режиме разработки&#10; command: &gt;&#10; sh -c &quot;python rosmorport_tsts/manage.py migrate &amp;&amp;&#10; python rosmorport_tsts/manage.py collectstatic --noinput &amp;&amp;&#10; python rosmorport_tsts/manage.py runserver 0.0.0.0:8000&quot;&#10; &#10; # Зависимости (если будут другие сервисы)&#10; # depends_on:&#10; # - db&#10; &#10; # Сохраняем контейнер в запущенном состоянии при ошибках&#10; stdin_open: true&#10; tty: true&#10; &#10; # Опционально: PostgreSQL база данных для продакшена&#10; # db:&#10; # image: postgres:16-alpine&#10; # container_name: rosmorport_db&#10; # environment:&#10; # - POSTGRES_DB=rosmorport_db&#10; # - POSTGRES_USER=postgres&#10; # - POSTGRES_PASSWORD=postgres&#10; # volumes:&#10; # - postgres_data:/var/lib/postgresql/data&#10; # ports:&#10; # - &quot;5432:5432&quot;&#10; # healthcheck:&#10; # test: [&quot;CMD-SHELL&quot;, &quot;pg_isready -U postgres&quot;]&#10; # interval: 10s&#10; # timeout: 5s&#10; # retries: 5&#10;&#10;# Именованные тома для хранения данных&#10;volumes:&#10; django_staticfiles:&#10; driver: local&#10; django_mediafiles:&#10; driver: local&#10; # postgres_data:&#10; # driver: local&#10;&#10;# Опционально: сеть для сервисов&#10;networks:&#10; default:&#10; name: rosmorport_network&#10; driver: bridge&#10;&#10;" />
</PendingDiffInfo>
</value>
</entry>
</map>
</option>
</component>
</project>