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

5.2 KiB
Raw Blame History

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                    ← создание нового сайта

Первый запуск

# 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 — проверить доступные обновления

./scripts/update-apps.sh

Скрипт покажет последние коммиты каждого приложения из apps.json.

Шаг 2 — обновить apps.json при необходимости

Если нужна конкретная ветка или тег:

// apps.json
[
  { "url": "https://github.com/frappe/erpnext",  "branch": "version-16" },
  { "url": "https://github.com/frappe/crm",       "branch": "main" }
]

Шаг 3 — полный цикл обновления

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

Частичные операции

make migrate          # только миграции (после ручного обновления)
make assets           # только пересборка JS/CSS
make restart          # перезапуск backend/frontend
make backup           # резервная копия сайта
make logs             # логи backend в реальном времени
make shell            # bash в контейнере backend
make ps               # статус всех контейнеров

Смена версии (например, v16 → v17)

# 1. Обновить ветки в apps.json
# 2. Пересобрать с новым тегом
make build TAG=v17

# 3. Обновить .env
# CUSTOM_TAG=v17

# 4. Пересоздать стек
make up
make migrate

Добавление нового приложения

  1. Добавить в apps.json:
{ "url": "https://github.com/frappe/hrms", "branch": "version-16" }
  1. Пересобрать образ и обновить:
make update
  1. Установить на сайт:
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