Чужой или унаследованный проект¶
Статья для ситуации, когда вы подключаетесь к уже существующему репозиторию с модулями Odoo — со своим odpm.json или без него — а не создаёте окружение «с чистого листа» по учебному демо.
Подготовка каталога окружения¶
Как и при новом проекте, создайте отдельный каталог odpm-окружения (например client_addons-19) и инициализируйте его ссылкой на git:
mkdir client_addons-19 && cd client_addons-19
odpm --init git@github.com:organization/client_addons.git --branch 19.0
Если в корне разрабатываемого репозитория уже есть odpm.json, odpm подхватит версии и зависимости оттуда. Если файла нет — укажите --odoo-version при --init или добавьте odoo_version в репозиторий до подключения.
Как читать сообщения при ошибках¶
Сначала смотрите вывод odpm на хосте — там ошибки подготовки, git и конфигурации. Журнал служб внутри контейнера:
docker compose logs -f
Сообщения интерфейса odpm на хосте могут быть на русском (если задан ODPM_LOCALE=ru_RU). Текстовый журнал Odoo и PostgreSQL в контейнере намеренно остаётся на английском — так проще искать известные ошибки в документации.
Правка описания стека¶
В репозитории разрабатываемого проекта (или в локальной копии после клонирования) правят odpm.json:
dependencies— git-репозитории, от которых зависят модули;requirements_txt— дополнительные пакеты Python;- при собственном форке ядра —
odoo_git_linkиplatform_name(свой репозиторий платформы).
Форматы ссылок: git, https, file.
Проверка без применения изменений¶
Перед рискованными правками:
odpm plan --skip-start
odpm plan --plan-show-diff --skip-start
Будет показано, какие шаги подготовки выполнились бы и как изменятся docker-compose.yml и служебная конфигурация — без записи на диск и без запуска контейнеров.
Фиксация версий для всей команды¶
После согласования зависимостей ответственный разработчик (координатор) выполняет:
odpm --update-lock --skip-start
и коммитит .odpm/deps.lock.json в репозиторий. Подробнее: deps.lock.json и роль координатора.
Унаследованный data dir PostgreSQL¶
Если каталог data PostgreSQL уже существовал до odpm 4.3 (в логах postgres: Skipping initialization), при первом odpm без файла .odpm/database/last_run.json odpm автоматически:
- поднимает PostgreSQL;
- создаёт или обновляет роль приложения (
odoo); - записывает baseline в
last_run.json.
Диагностика:
odpm database status
odpm plan --skip-start
Если роль отсутствует, а adoption ещё не сработал:
odpm database ensure-role
Смена POSTGRES_SERVICE_NAME или порта в .env даёт drift относительно снимка — odpm предупредит в plan. После переименования сервиса удалите orphan-контейнеры: docker compose down --remove-orphans.
Общий профиль в ~/.odpm/.env (4.7)¶
С 4.7 odpm при чтении объединяет ~/.odpm/.env (общие пути, SSH, ODPM_LOCALE) и project .env (порты, ODPM_COMPOSE_PREFIX, локальные ${VAR}). При совпадении ключа побеждает project. В project достаточно хранить только отличия — см. переменные .env, ADR-013.
Несколько odpm-проектов на одном хосте (4.7)¶
Если на машине одновременно работают несколько odpm-окружений и нужно избежать конфликтов имён Docker Compose, задайте в project .env уникальный префикс:
ODPM_COMPOSE_PREFIX=acme
odpm перепишет сервисы db / odoo, volume postgres-data и передаст docker compose -p acme. В manifest и плагинах по-прежнему используйте логические имена (depends_on: ["db"]). Подробнее: переменные .env, ADR-012.
Именованная compose-сеть (4.7)¶
Чтобы подключить весь стек к external сети reverse proxy (Traefik, Caddy), обычно в ~/.odpm/.env:
ODPM_COMPOSE_NETWORK=proxy
ODPM_COMPOSE_NETWORK_EXTERNAL=1
Для managed bridge-сети в project .env — ODPM_COMPOSE_NETWORK=stack (с prefix — physical acme-stack). Без переменных odpm оставляет implicit default network. См. переменные .env, ADR-014.
Adoption не меняет владельца существующих Odoo-баз в PostgreSQL. Для --db-drop / --db-restore на таких базах см. состояние PostgreSQL.
Частые затруднения¶
- Несовместимые версии во вложенных
odpm.jsonзависимостей: в режиме разработчика — предупреждение, в сценарииci— ошибка. - Нет доступа по SSH к приватному git: настройте
~/.sshили укажитеPATH_TO_SSH_KEYв.env(переменные окружения). - Долгое первое клонирование платформы Odoo — нормально; повторные запуски существенно быстрее.