Локальная разработка с нуля¶
Эта статья описывает типичный путь разработчика на своём компьютере. Сценарий использования: ODPM_SCENARIO=developer (значение по умолчанию).
Зачем отдельный каталог под каждую версию Odoo¶
Создайте на диске каталог, в котором будет жить окружение проекта, а не обязательно только исходники модулей. Удобно добавлять к имени суффикс с версией Odoo, например my-odoo-project-17: различия между major-версиями существенны, и для 16.0 и 17.0 разумно иметь разные каталоги odpm, даже если модули лежат в одном git-репозитории.
mkdir my-odoo-project-17
cd my-odoo-project-17
Этот каталог 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 17.0
Параметр --branch задаёт ветку разрабатываемого репозитория. Если ветку не указать, будет использована ветка по умолчанию на сервере git.
Инициализация с локального каталога¶
Если вы пока не используете удалённый git:
odpm --init file:///home/user/path/to/my_addons
Подробно о формате file:// и трёх слэшах — в статье Ссылки на репозитории.
Что происходит при первом запуске¶
При первом вызове odpm --init (и при последующих полных прогонах подготовки) утилита последовательно:
- Задаёт вопросы мастера настройки и сохраняет ответы в
.env(каталог резервных копий, каталог клонов git, порты, сценарийdeveloper/server/ci). - При развёртывании «с нуля» уточняет версию Odoo, если её нет в
odpm.jsonразрабатываемого проекта. - Клонирует репозиторий платформы Odoo (это может занять 40 минут и больше — наберитесь терпения).
- Клонирует разрабатываемый проект или подключает указанный локальный каталог.
- Генерирует
Dockerfileпод выбранный дистрибутив Linux и версию Python. - Копирует шаблон в
.odpm/dockerignoreи создаёт корневой.dockerignoreдля сборки образа. - При необходимости собирает базовый Docker-образ.
- Генерирует
docker-compose.yml. - В сценарии разработчика — создаёт настройки отладчика для VS Code.
- Запускает контейнеры (
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.