Введение
Разработка модулей (addons) для Odoo 17.0 может показаться сложной задачей, особенно для начинающих разработчиков. Однако, с правильными инструментами и настройками этот процесс можно значительно упростить. В этой статье мы подробно рассмотрим, как настроить рабочую среду для разработки модулей для Odoo 17.0 с использованием Visual Studio Code (VSCode) и Docker.
Почему выбирают Odoo?
Odoo — это мощная платформа для управления бизнесом, которая предлагает широкий спектр функционала, от CRM до ERP систем. Благодаря своей модульной архитектуре, Odoo позволяет легко расширять функциональность, создавая собственные модули.
Предварительные требования
Перед началом работы убедитесь, что у вас установлены следующие инструменты:
- Docker: Контейнеризация приложений.
- Visual Studio Code: Популярный редактор кода.
- Расширение Remote - Containers для VSCode: Для работы с контейнерами.
Шаг 1: Настройка проекта Odoo
Создание рабочей директории
Создайте директорию для вашего проекта и перейдите в неё:
> mkdir odoo
> cd odoo
Создание файла docker-compose.yml
Создайте файл docker-compose.yml
с следующим содержимым:
version: '3'
services:
web:
image: odoo:17.0
user: root
depends_on:
- db
ports:
- "8069:8069"
volumes:
- ./odoo-data:/var/lib/odoo
- ./config:/etc/odoo
- ./addons:/mnt/extra-addons
environment:
- PASSWORD_FILE=/run/secrets/postgresql_password
secrets:
- postgresql_password
command: odoo --dev=all
db:
image: postgres
ports:
- "5444:5432"
environment:
- POSTGRES_DB=postgres
- POSTGRES_PASSWORD_FILE=/run/secrets/postgresql_password
- POSTGRES_USER=odoo
- PGDATA=/var/lib/postgresql/data/pgdata
volumes:
- ./odoo-db-data:/var/lib/postgresql/data/pgdata
secrets:
- postgresql_password
volumes:
odoo-data:
odoo-db-data:
secrets:
postgresql_password:
file: odoo_pg_pass
Для контроля доступа к базе данных postgres в корне дирректории создайте файл ‘odoo_pg_pass’ в нем будет храниться пароль для бользователя odoo
> touch odoo_pg_pass
> echo "pass123456" > odoo_pg_pass
Шаг 2: Запуск Odoo
Запуск контейнеров
Запустите Docker контейнеры командой:
> docker compose up --build -d
> docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
odoo-db-1 postgres "docker-entrypoint.s…" db 5 weeks ago Up 8 seconds 0.0.0.0:5444->5432/tcp, :::5444->5432/tcp
odoo-web-1 odoo:17.0 "/entrypoint.sh odoo…" web 5 weeks ago Up 7 seconds 0.0.0.0:8069->8069/tcp, :::8069->8069/tcp, 8071-8072/tcp
выдача комнды docker compose ps говорит о том что фукционируют два контейнера, одинс с кодами Odoo, второй с базой данных postgres.
Папки и файлы
Обратите внимение что были созданы дирректории ./addons, ./confog, ./odoo-data и ./odoo-db-data - эти дирректории отражение того что находтся в контейнерах, их содержимое будет сохраннено после остновки и переиспользовано при последующих запусках контейнеров Docker:
> ll
drwxrwxrwx 8 surge surge 8 июл 20 04:21 addons
drwxrwxrwx 2 root root 3 июн 26 10:25 config
-rw-rw-r-- 1 surge surge 808 июн 26 09:49 docker-compose.yml
drwxrwxrwx 7 root root 8 июн 10 18:37 odoo-data
drwx------ 19 999 root 26 июл 31 15:41 odoo-db-data
-rw-rw-r-- 1 surge surge 10 июн 7 09:29 odoo_pg_pass
Первый вход в Odoo
В выдче команды docker compose ps можно заметить запись по открытых сетевых портах и их переадресации внутрь контейнера 0.0.0.0:8069->8069/tcp. Введи в барузер адрес http://0.0.0.0:8069 или http://localhost:8069
Более подробно о первичных натсройках Odoo 17.0 после ее установки смотрите в статье Первый запуск Odoo 17.0 и ее базовые настройки.
Подготовка окружения дря разработки Odoo addons
Права доступа к данным Odoo в контейнере
В предыдущей секции команда docker compose up –build создала несколько дирректорий ялвяющиеся отражением того что содержится в контейнерах. Правлиа создания директорий описаны в файле docker-compose.yml:
- ./addons - дирректория для размащения папок addons которые буду разрабатываться с нуля;
- ./config - отражает содержимое папки /etc/odoo в контейнере и содержит минимум один файл odoo.conf;
- ./odoo-db-data - содержит фалы posgres создаванне и изменяемые в конейнере db.
Необзодимо изменить владельца этих паопок для возможности вносить в них изменения:
> chown -R $USER:$USER ./addons
> chown -R $USER:$USER ./config
> chown -R $USER:$USER ./odoo-db-data
Минимальные настройки в фале odoo.conf
В дирректории ./config должен находтися файл odoo.conf, если его нет, создайте. Убедить что в файле определена насройка addons_path которая определят откуда в контейнере odoo будут браться ваши разрабатывеамые addons. Именно для этого в docker-compose.yml определен раздел - ./addons:/mnt/extra-addons. В файле odoo.conf возможно наличие других паремтров которые Odoo добавляет полсе первого запуска:
[options]
addons_path = /mnt/extra-addons
admin_passwd = $pbkdf2-sha512$600000$MeY8J2Ts/b9XKoXwXguBsA$uKxNGJc2mHQnxLto2uEVfo3l9855msMAqK.W/AIB8sMNt0IqlqlW4mS8gKhom..JMHW9AVghW46Pm7D2SlRh4A
Тепреь при зауске docker compose up –build можно видеть по каким путям odoo ищет папки с addons
web-1 | 2024-08-07 15:46:26,350 1 INFO ? odoo: addons paths: ['/usr/lib/python3/dist-packages/odoo/addons', '/root/.local/share/Odoo/addons/17.0', '/mnt/extra-addons']
Использование VSCode и первый addons для odoo 17.0
VSCode предлагает потрясающий плагин которые позволяет разрабатывать код прямо в контейнере докер. Для этого необходимо установить соотвевующий plugin в вашем VSCode.
Полная информации разработки в VSCode с использованим контейнеров тут Developing inside a Container
Разработка в Docker позволяет иметь все системные настройки так, как это будет при развертывании в production, при этом, если вы создаете или редактируете файлы в дирректориях которые определены docker-compose.yml, то все изменеия будут отражены в ваши локальные папки и будут всегда доступны вам и контейнеру при следущем запуске.
Запустите контейнеры определенные в docker-compose.yml
> docker compose up --build -d
Подключитесь VSCode к контейнеру