Перейти к содержанию

Локальная разработка с нуля

Эта статья описывает типичный путь разработчика на своём компьютере. Сценарий использования: ODPM_SCENARIO=developer (значение по умолчанию).

Зачем отдельный каталог под каждую версию Odoo

Создайте на диске каталог, в котором будет жить окружение проекта, а не обязательно только исходники модулей. Удобно добавлять к имени суффикс с версией Odoo, например my-odoo-project-19: различия между major-версиями существенны, и для 18.0 и 19.0 разумно иметь разные каталоги odpm, даже если модули лежат в одном git-репозитории.

mkdir my-odoo-project-19
cd my-odoo-project-19

Этот каталог odpm заполнит служебными файлами (docker-compose.yml, user_settings.json, каталог .odpm и др.). Разрабатываемый проект (ваши модули) может находиться в другом месте на диске или в отдельном git-репозитории — odpm подключит его по ссылке при инициализации.

Редактор и терминал

Откройте созданный каталог в Visual Studio Code (меню «Файл → Открыть папку»). Встроенный терминал редактора удобен для всех команд odpm.

Важно: не оборачивайте запуск odpm в виртуальное окружение Python на хосте. Утилита рассчитана на запуск системным python3 или командой odpm из пакета; изолированное окружение Python для Odoo создаётся внутри контейнера.

Инициализация из git-репозитория

odpm --init https://github.com/your-org/your-odoo-project.git --branch 19.0

Параметр --branch задаёт ветку разрабатываемого репозитория. Если ветку не указать, будет использована ветка по умолчанию на сервере git.

Инициализация с локального каталога

Если вы пока не используете удалённый git:

odpm --init file:///home/user/path/to/my_addons

Подробно о формате file:// и трёх слэшах — в статье Ссылки на репозитории.

Что происходит при первом запуске

При первом вызове odpm --init (и при последующих полных прогонах подготовки) утилита последовательно:

  1. Задаёт вопросы мастера настройки и сохраняет ответы в .env (каталог резервных копий, каталог клонов git, порты, сценарий developer / server / ci).
  2. При развёртывании «с нуля» уточняет версию Odoo, если её нет в odpm.json разрабатываемого проекта.
  3. Клонирует репозиторий платформы Odoo (это может занять 40 минут и больше — наберитесь терпения).
  4. Клонирует разрабатываемый проект или подключает указанный локальный каталог.
  5. Генерирует Dockerfile под выбранный дистрибутив Linux и версию Python.
  6. Копирует шаблон в .odpm/dockerignore и создаёт корневой .dockerignore для сборки образа.
  7. При необходимости собирает базовый Docker-образ.
  8. Генерирует docker-compose.yml.
  9. В сценарии разработчика — создаёт настройки отладчика для VS Code.
  10. Запускает контейнеры (docker compose up), устанавливает Python-зависимости в окружение внутри контейнера и стартует Odoo.

Остановить интерактивный процесс на переднем плане: Ctrl+C. Контейнеры при необходимости останавливают отдельно: docker compose down.

Первая база данных и модули

После успешной подготовки:

odpm -d test_db -i -u
  • -d test_db — имя базы; если базы нет, она создаётся с параметрами из db_creation_data в user_settings.json.
  • -i — установить модули из поля init_modules.
  • -u — обновить модули из поля update_modules.

Откройте http://127.0.0.1:8069 — должно появиться окно входа в Odoo.

Два главных конфигурационных файла

Файл Назначение
odpm.json Описание стека: версия Odoo, Python, PostgreSQL, список git-зависимостей, пакеты Python. Часто хранится в git вместе с модулями.
user_settings.json Рабочие настройки: ссылка на разрабатываемый проект, какие модули ставить и обновлять, параметры создания базы, режим разработки Odoo. Создаётся из шаблона, если отсутствует.

Разделение подробнее: odpm.json и user_settings.json.

Повседневная работа

Задача Действие
Перезапустить окружение после смены настроек odpm или odpm --skip-start, затем при необходимости docker compose up -d
Обновить модуль после правки кода odpm -d test_db -u
Резервная копия базы odpm -d test_db --db-backup
Восстановление из архива odpm -d test_db --db-restore имя_архива
Новый модуль odpm scaffold имя_модуля
Отладка с точками останова VS Code и отладка
API-ключи и токены для модулей Локальные секреты.odpm/secrets.json/run/odpm/secrets.json

Секреты для модулей (опционально)

Если модули обращаются к внешним API, подготовьте файл секретов до или после init:

# из шаблона (после odpm --init)
cp .odpm/secrets.example.json .odpm/secrets.json
# отредактируйте ключи, затем:
odpm --skip-start

Или при init: odpm --init … --secrets-file /path/to/secrets.json.

После смены значений снова odpm --skip-start и при необходимости docker compose up -d. Подробно — локальные секреты.

Шаблон .dockerignore

Правила исключения файлов при сборке образа правят в .odpm/dockerignore. Корневой .dockerignore odpm пересоздаёт при каждом запуске — его не редактируют вручную. Чтобы вернуть шаблон к заводским значениям odpm, удалите .odpm/dockerignore и снова запустите odpm.