frappe_docker/DEPLOY.md
abounoone 717d19f966 Add hrms app and update branch strategy docs
apps.json:
- Add frappe/hrms @ version-16 (HR & Payroll, ★7.6k)
- Reorder: erpnext → hrms → crm → helpdesk → payments → insights → lms → telephony

DEPLOY.md:
- Add branch strategy table
- Add GitHub Actions workflows section

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-18 09:06:59 +00:00

175 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Frappe ERP — развёртывание и обновление
## Стратегия обновления приложений
| Приложение | Ветка | Почему |
|------------|-------|--------|
| `frappe` | `version-16` | стабильная ветка мажорной версии |
| `erpnext` | `version-16` | стабильная ветка мажорной версии |
| `hrms` | `version-16` | стабильная ветка мажорной версии |
| `crm` | `main` | нет ветки version-16, main = стабильный |
| `helpdesk` | `main` | нет ветки version-16 |
| `insights` | `main` | v2.x line, v3.x — отдельная мажорная версия |
| `lms` | `main` | нет ветки version-16 |
| `payments` | `develop` | нет релизов, активная разработка |
| `telephony`| `develop` | нет релизов, активная разработка |
**Автоматические обновления** — GitHub Actions каждый понедельник проверяет новые теги
и создаёт PR при наличии обновлений (`.github/workflows/check-app-updates.yml`).
**Автосборка образа** — при merge в `main` с изменениями `apps.json` автоматически
стартует сборка и публикация образа в GHCR (`.github/workflows/build-image.yml`).
---
## Структура репозитория
```
frappe_docker/
├── apps.json ← список приложений для образа
├── compose.yaml ← основной docker-compose
├── .env ← конфигурация (не в git, создать из .env.example)
├── .env.example ← шаблон конфигурации
├── Makefile ← все команды управления
├── DEPLOY.md ← эта документация
├── .github/
│ └── workflows/
│ ├── check-app-updates.yml ← еженедельная проверка обновлений → PR
│ └── build-image.yml ← сборка образа при изменении apps.json
├── images/
│ ├── layered/Containerfile ← сборка на базе frappe/build (быстро)
│ └── custom/Containerfile ← сборка с нуля (полный контроль)
├── overrides/
│ ├── compose.assets-volume.yaml ← общий том assets (обязателен)
│ ├── compose.mariadb.yaml ← встроенная MariaDB
│ └── ... ← другие оверрайды (proxy, ssl, etc.)
└── scripts/
├── build.sh ← сборка образа
├── update-apps.sh ← проверка обновлений приложений
└── new-site.sh ← создание нового сайта
```
---
## Первый запуск
```bash
# 1. Создать конфигурацию
cp .env.example .env
# Отредактировать .env: задать DB_PASSWORD, FRAPPE_SITE_NAME_HEADER и т.д.
# 2. Собрать образ с приложениями из apps.json
make build
# 3. Запустить стек
make up
# 4. Создать сайт (если ещё не создан)
./scripts/new-site.sh erp.local YourAdminPassword
```
---
## Обновление приложений
### Шаг 1 — проверить доступные обновления
```bash
./scripts/update-apps.sh
```
Скрипт покажет последние коммиты каждого приложения из `apps.json`.
### Шаг 2 — обновить apps.json при необходимости
Если нужна конкретная ветка или тег:
```json
// apps.json
[
{ "url": "https://github.com/frappe/erpnext", "branch": "version-16" },
{ "url": "https://github.com/frappe/crm", "branch": "main" }
]
```
### Шаг 3 — полный цикл обновления
```bash
make update
```
Это выполнит:
1. `make build` — пересборка образа frappe-custom:v16
2. `docker compose up -d --no-deps` — замена контейнеров без даунтайма DB/Redis
3. `bench migrate` — применение миграций БД
4. `bench build` — пересборка JS/CSS assets
5. Перезапуск nginx
---
## Частичные операции
```bash
make migrate # только миграции (после ручного обновления)
make assets # только пересборка JS/CSS
make restart # перезапуск backend/frontend
make backup # резервная копия сайта
make logs # логи backend в реальном времени
make shell # bash в контейнере backend
make ps # статус всех контейнеров
```
---
## Смена версии (например, v16 → v17)
```bash
# 1. Обновить ветки в apps.json
# 2. Пересобрать с новым тегом
make build TAG=v17
# 3. Обновить .env
# CUSTOM_TAG=v17
# 4. Пересоздать стек
make up
make migrate
```
---
## Добавление нового приложения
1. Добавить в `apps.json`:
```json
{ "url": "https://github.com/frappe/hrms", "branch": "version-16" }
```
2. Пересобрать образ и обновить:
```bash
make update
```
3. Установить на сайт:
```bash
make shell
bench --site erp.local install-app hrms
```
---
## Переменные окружения (.env)
| Переменная | Описание | Пример |
|-------------------------|------------------------------------------|---------------------|
| `CUSTOM_IMAGE` | Имя Docker-образа | `frappe-custom` |
| `CUSTOM_TAG` | Тег образа | `v16` |
| `PULL_POLICY` | `missing` — использовать локальный образ | `missing` |
| `DB_PASSWORD` | Пароль MariaDB | (сильный пароль) |
| `FRAPPE_SITE_NAME_HEADER` | Имя сайта | `erp.local` |
| `HTTP_PUBLISH_PORT` | Внешний порт HTTP | `8090` |
| `BACKUP_CRONSTRING` | Расписание бэкапов | `@every 6h` |