Commit Graph

76 Commits

Author SHA1 Message Date
711b34af3d refactor: использовать image из реестра вместо локальной сборки в production
- Заменен build: ... на image: git.cube2.ru/erjemin/2024-test-rosmorport:latest
- В production образ должен быть собран в CI/CD и загружен из реестра
- Watchtower будет автоматически обновлять контейнер при выходе нового image
- Это более правильный и безопасный подход для production
2026-04-01 01:00:23 +03:00
20d78194d2 fix: исправления для CI/CD сборки
All checks were successful
Build and Push PetClones-site / build-and-push (push) Successful in 1m14s
- Исправлен warning: FROM ... AS builder (заглавные буквы согласно Dockerfile best practices)
- Убран multiplatform (linux/arm64) и остановлены на linux/amd64 для надежности
  (arm64 добавим позже когда система будет стабильной)
- Увеличен timeout с 1800 до 3600 сек (30 до 60 минут) для надежности при медленном интернете
- Это должно решить проблему '499 Client Closed Request' при push в реестр Gitea
2026-04-01 00:54:07 +03:00
37719ed31e fix: разрешить копирование config/nginx в Docker (нужен для production)
Some checks failed
Build and Push PetClones-site / build-and-push (push) Failing after 1m25s
- Удалено исключение config/ из .dockerignore
- config/nginx/pet-clones--external-nginx.conf требуется для Docker образа
- Используется в docker-compose.prod.yml для настройки nginx reverse-proxy
2026-04-01 00:35:44 +03:00
a9fb77c195 feat: финальная конфигурация production Docker для RosmorPort
Some checks failed
Build and Push PetClones-site / build-and-push (push) Failing after 21s
Обновлен Dockerfile:
- Исправлены права доступа пользователя appuser (создание перед COPY)
- Правильный порядок операций (USER -> COPY -> mkdir)
- Оптимизация для production (workers=1, timeout=120, max-requests=200)
- collectstatic и удаление лишних файлов статики при build
Обновлен docker-compose.prod.yml:
- Переименован контейнер в petclones-site--backend
- Production переменные окружения (DEBUG=False)
- Volumes для media, database и nginx конфигов
- Gunicorn с параметрами для production
- Watchtower для автоматического обновления образов
- Ограничение ресурсов (0.25 CPU, 512M RAM)
- JSON logging с ротаци??бновлен Dockerfile:
- Исправлены права доступа пользователя appuser (создание перед COPY?? Исправлены пр?? Правильный порядок операций (USER -> COPY -> mkdir)
- Оптимизация для prod
2026-04-01 00:08:53 +03:00
1b0fa5e500 build: игнорировать copilotDiffState.xml (локальное состояние GitHub Copilot IDE)
- Удален copilotDiffState.xml из git истории
- Добавлено правило в .gitignore для игнорирования этого файла
- Это локальный служебный файл PyCharm, специфичный для машины разработчика
- Не должен попадать в репозиторий и загрязнять git history
2026-04-01 00:04:12 +03:00
bbf35c0c24 mod: убрал jinja2 (мусор в комментариях) 2026-03-31 23:55:21 +03:00
08668fee6d del: ini-файл uWSGI не нужен. В контейнере используется gunicorn 2026-03-31 22:33:31 +03:00
d846542e34 docs: обновлен about.jinja с информацией о проекте
Добавлена информация:
- История проекта РосМорПорт с 2004 года
- Ссылка на репозиторий (https://git.cube2.ru/erjemin/2024-test-rosmorport)
- Описание переделки в 2026 году для развертывания в Docker при переносе на новый хостинг
2026-03-31 19:19:20 +03:00
792d152be2 feat: оптимизация Docker контейнера для разработки
Обновлен Dockerfile с двухэтапной сборкой, экспортом зависимостей через poetry, сборкой статики и удалением лишних файлов (экономия ~20МБ).
Обновлен docker-compose.yml с привязкой к localhost для безопасности.
Обновлен .dockerignore для исключения ненужных файлов (source maps, RTL CSS, TTF).
Добавлены таймауты SQLite в settings.py.
Минимальные параметры Gunicorn: 1 worker, timeout 30s, max-requests 100.
Тестировано и работает на http://localhost:8040
2026-03-31 18:57:33 +03:00
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
8385e04103 refactor: Удалена ненужная папка logs
Причины:
- В production логи nginx хранятся в системной папке хоста
- В dev образ постоянно перестраивается, логи не накапливаются
- Логи не нужны для хранения в контейнере
Удалено:
- Папка logs из корня проекта
- mkdir -p /app/logs из Dockerfile
- Монтирование logs из docker-compose.yml и docker-compose.prod.yml
- Переменная TOUCH_RELOAD из settings.py и .env файлов
Результат: более clean и минималистичная структура проекта
2026-03-31 13:45:32 +03:00
55980a0659 fix: Исправлен путь к БД SQLite - используется абсолютный путь
- Проблема: при запуске manage.py из rosmorport_tsts/ относительный путь database/db.sqlite3 не работал
- Решение: теперь путь всегда строится как абсолютный от PROJECT_ROOT
- БД корректно находится в database/db.sqlite3 в корне проекта
- Протестировано: проект запускается без ошибок, БД содержит 17 записей из production
Структура БД скопирована с production сервера.
2026-03-31 01:42:18 +03:00
ef80a66b69 refactor: Реорганизация структуры для контейнеризации
- database/ папка в корне проекта для БД
- public/ для статики и медиа (монтируются отдельно)
- Обновлены docker-compose файлы с правильными томами
2026-03-31 01:25:15 +03:00
493de32998 security: Переведена админ панель на переменную окружения ADMIN_URL
- Добавлена переменная окружения ADMIN_URL для динамического управления URL админки
- Дефолтное значение в коде: 'admin/' (стандартное, безопасное)
- Пользователь может переопределить через .env для скрытия в production
- Примечание: никогда не коммитьте реальные значения секретов в .env.example
Это позволяет:
- Легко скрывать админку от автоматических сканеров
- Использовать разные URL для dev/production
- Не хранить секреты в коде
2026-03-31 00:48:34 +03:00
31cd78079a fix: Исправлена раздача статических файлов в DEV режиме
- Исправлены пути STATICFILES_DIRS и MEDIA_ROOT (они должны быть относительно корня проекта, а не settings.py)
- Добавлена раздача STATIC_URL в urls.py для DEBUG режима
- Проверено что все статические файлы (CSS, JS) отдаются с кодом 200
Использование:
- Media:  Не используется (нет FileField/ImageField в моделях)
- Static:  Используется (CSS, JS, images в public/static)
Статика теперь корректно работает в dev окружении.
2026-03-31 00:31:32 +03:00
1a2865bae7 refactor: Облегчение pyproject.toml для production
- Удалены dev зависимости (pytest, black, ruff, mypy, ipython и т.д.)
- Оставлены только необходимые для production пакеты
- poetry.lock сокращен с 63KB до 4KB
- Проект работает нормально (django check passed)
Для локальной разработки можно установить нужные инструменты отдельно при необходимости.
2026-03-31 00:18:51 +03:00
d9e8c2d8bd feat: Настройка проекта для локальной разработки
- Добавлена конфигурация через poetry (pyproject.toml + poetry.lock)
- Переделана система конфигурации Django с .env переменными
- Добавлен файл .env для локальной разработки (SQLite БД)
- Обновлен settings.py для работы с переменными окружения
- Создана документация по локальной разработке (DEVELOPMENT.md)
- Подготовлена инфраструктура для Docker (Dockerfile, docker-compose.yml)
- Обновлен .gitignore для Python/Django проекта
Проект работает локально с миграциями и админ пользователем (admin/1234).
2026-03-31 00:09:46 +03:00
e-serg
a007337f75 add: login/pwd 2024-11-17 15:46:21 +03:00
e-serg
c91d5f00b0 Ссылка на деплой https://pet-clones.cocorico.ru/ 2024-11-17 15:44:16 +03:00
e-serg
1a52626440 feedback на решение задания 2024-04-24 18:09:49 +03:00
e-serg
d8b1af4cda Note: CRLF in uWSGI.ini 2024-04-18 11:09:10 +03:00
e-serg
aacbe7e013 пример заполнения секретного файла 2024-04-15 19:34:17 +03:00
e-serg
9d8a1bdf6b config nginx (w ssl) 2024-04-15 19:27:18 +03:00
e-serg
a8c156e25d . corrected for prod 2024-04-15 19:17:58 +03:00
e-serg
5975923cbb config uwsgi (tested) 2024-04-15 19:16:50 +03:00
e-serg
3de98e01b3 config nginx (w/o ssl) 2024-04-15 19:16:22 +03:00
e-serg
e8c8cb393f .cp1251->utf8 2024-04-15 17:41:27 +03:00
e-serg
65042dcebc .красота 2024-04-15 14:09:08 +03:00
e-serg
04c204fc57 ERR FIX: наложение фильтров 2 2024-04-15 13:34:00 +03:00
e-serg
8cbbd15829 ERR FIX: наложение фильтров 2024-04-15 13:23:04 +03:00
e-serg
d1839a8005 +admin security 2024-04-15 13:00:41 +03:00
e-serg
46b0a08501 .fastes default sort 2024-04-15 12:39:45 +03:00
e-serg
043e7b4679 fix: security 2024-04-15 06:59:16 +03:00
e-serg
ec8c1ef789 . 2024-04-15 06:36:59 +03:00
e-serg
f9c3dd3323 WARNING: не работает uwsgi (поменялись форматы конфигов) и пришлось запустить как proxy 2024-04-15 06:35:32 +03:00
e-serg
6f1d997adc fix for prod 2024-04-15 04:26:47 +03:00
e-serg
31c7ae6a40 Пакеты окружения PROD 2024-04-15 03:55:45 +03:00
e-serg
43cd7367ca ADD: nginx config w.ssl -- checked prod 2024-04-15 03:52:50 +03:00
e-serg
bff6d2fde7 ADD: nginx config -- checked prod 2024-04-15 03:42:30 +03:00
e-serg
dca0cca628 нулевой gif 2024-04-15 03:07:53 +03:00
e-serg
3978e75d1b .fix 2024-04-15 02:54:29 +03:00
e-serg
149093c715 ADD: Отчёты 2024-04-15 02:52:11 +03:00
e-serg
e419e46700 Изменено расположение шаблонов 3 2024-04-14 23:48:40 +03:00
e-serg
66e867794f Изменено расположение шаблонов 2 2024-04-14 23:37:02 +03:00
e-serg
b0c9722d10 Изменено расположение шаблонов 2024-04-14 23:35:23 +03:00
e-serg
c0864ba183 +чуть меньше трафика 2024-04-14 23:14:11 +03:00
e-serg
51aceebf24 ADD: About+ 2024-04-14 23:13:45 +03:00
e-serg
2b4852ab5b ADD: About 2024-04-14 23:07:41 +03:00
e-serg
92aa867e0f ADD: данные записываются в БД 2024-04-14 22:07:43 +03:00
e-serg
b449e6f4d9 ADD: ввод данных 2024-04-14 20:39:45 +03:00