Подготовка к разработке addons для Odoo 17.0 с исользованием VSCode и Docker.

Подготовка к разработке addons для Odoo 17.0 с исользованием VSCode и Docker.

  • |
  • 01 January 0001
Post image

Введение

Разработка модулей (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

alter-text
Odoo сразу полсе установки.

Более подробно о первичных натсройках 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.

alter-text
Установка поддрежки Docker в VSCode.

Полная информации разработки в VSCode с использованим контейнеров тут Developing inside a Container

Разработка в Docker позволяет иметь все системные настройки так, как это будет при развертывании в production, при этом, если вы создаете или редактируете файлы в дирректориях которые определены docker-compose.yml, то все изменеия будут отражены в ваши локальные папки и будут всегда доступны вам и контейнеру при следущем запуске.

Запустите контейнеры определенные в docker-compose.yml

> docker compose up --build -d

Подключитесь VSCode к контейнеру

alter-text
Подключение VSCode к контенеру Odoo.