frappe_docker/DEPLOY.md
abounoone c60ecbbabc Add deployment tooling: Makefile, scripts, docs
- Makefile: единые команды build/up/update/migrate/assets/backup/shell
- scripts/build.sh: сборка образа с apps.json → base64
- scripts/update-apps.sh: проверка последних коммитов приложений через GitHub API
- scripts/new-site.sh: создание нового сайта со всеми приложениями
- .env.example: шаблон конфигурации с комментариями
- DEPLOY.md: документация по развёртыванию и обновлению

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

148 lines
5.2 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_docker/
├── apps.json ← список приложений для образа
├── compose.yaml ← основной docker-compose
├── .env ← конфигурация (не в git, создать из .env.example)
├── .env.example ← шаблон конфигурации
├── Makefile ← все команды управления
├── DEPLOY.md ← эта документация
├── 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` |