Как ускорить разработку на Odoo с помощью Docker на Windows
При стандартной работе менеджера разработки на Windows все будет работать очень медленно. Это связано с тем, что все файлы с которыми мы работаем и пытаемся пробросить внутрь контейнера доступны для WSL Linux как сетевые. Чтобы избежать этого мы будем сразу работать внутри WSL Linux. Это позволит значительно ускорить работу системы и позволит не переходить на Linux сразу.
Такой подход имеет свои ограничения - скорость копирования данных из файловой системы Windows в файловую систему WSL Linux очень низкая. Файловая система Linux находится внутри виртуального жесткого диска, который имеет динамический размер. Поэтому такой способ разработки подходит для небольших(по объему базы данных) и учебных проектов. В случае промышленной разработки я рекомендую переходить целиком на Linux, это позволит обойти все эти ограничения.
Будем считать что у вас уже установлены следующие программы на вашу Windows
- Docker Desktop
- VSCode
При установке Docker Desktop его инсталятор сам попытается установить WSL2, а так же в него будет установлено два минималистичных WSL Linux дистрибутива с именами docker-desktop
и docker-desktop-data
Для наших целей необходимо установить WSL2 и Debian
Запускаем PowerShell (от имени администратора)
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Чтобы проверить, какой версии установлен wsl и в случае необходимости сменить версию, следуйте советам на здесь Чтобы удалить подсистему linux, следуйте советам вот тут
Установка Debian на WSL
Устанавливаем Debian
wsl --install -d Debian
При запуске вводим имя пользователя и пароль. Я ставлю следущие:
- имя пользователя - odoo
- пароль - odoo
После этого вы должны остаться в Debian консоли примерно такого вида:
odoo@DESTOP-B6VG0DP:_
Если вы вышли в консоль Windows то зайти заново можно с помощью команды:
wsl --distribution Debian --user odoo
Настройка Docker Desktop
Для того, чтобы у нас все корректно работало нам нужно правильно подготовить Docker Desktop. Для этого нам надо его запустить.
- Нажимаем на шестриренку и открвается меню настроек
- Находим пункт WSL Integration
- Снимаем галочку, чтобы не использовался встроенный дитрибутив
- Включаем Debian
- Применяем наши настройки
Подключение к Debian с помощью VSCode
Для всех дальнейших действий мы будем использовать VSCode, поэтому запускаем его и устанавливаем себе дополнительное расширение с именем "Remote Development"
- Кликаем на эту иконку
- В строке поиска вводим текст
- Устанавливаем это расширение
После этого мы сможем подключиться к WSL дистрибутиву
- Нажимаем на эту кнопку
- выбираем этот пункт меню и выбираем Debian
Затем ждем когда VSCode установит свои компоненты внуть Debian, при первом запуске это может занять некоторое время
После того как VSCode все установил и подключился, нам нужно выбрать рабочий каталог
- Нажимаем на иконку для перехода в режим управления файлами
- Нажимаем кнопку "Открыть папку"
- Выбираем домашний каталог нашего пользователя, в нашем случае это
/home/odoo
- Нажимаем ОК
На вопрос о доверии этой папке:
- Ставим галочку
- Нажимаем - "Да, я доверяю авторам"
После этого надо открыть терминал:
- Нажимаем на меню "Терминал"
- Открваем
Теперь мы можем работать с коммандной строкой нашего Debian, а справа у нас файлы домашнего каталога пользовалетя odoo
Начинаем подготовку системы:
Ставим все нужные пакеты
sudo apt install -y git mc docker.io docker-compose
система попросит пароль - это пароль от нашего пользователя Debian в нашем случае это odoo
Сейчас мы находимся в домашнем каталоге пользователя odoo. В Linux файловая систем имеет древовидную структуру и всегда начинается с /
. Это так называемый корень файловой системы. Все домашние каталоги пользователей находятся в каталоге /home
и называются именем пользователя. В нашем случае наша домашний каталог имеет полный путь /home/odoo
. В этом же каталоге хранятся все индивидуальные настройки самого пользователя. Так же для навигации по каталогам вы можете запустить команду mc
, ее мы установили на предыдущем шаге. Это двух-панельный файловый менеджер. Оно поможет лучше ориентироваться в файловой системе Linux. Если вы запустили mc то кликните мышкой на F10(Выход) в правом нижнем углу, или наберите exit
.
Теперь давайте создадим каталог для хранения наших проектов:
mkdir /home/odoo/projects
Теперь заходим в папку projects
cd /home/odoo/projects
И клонируем туда наш менеджер проектов:
git clone https://github.com/aayartsev/odoo_dev_project.git
И создадим каталог для нашего учебного проекта:
mkdir /home/odoo/projects/odoo_demo_project-16
Теперь заходим туда
cd /home/odoo/projects/odoo_demo_project-16
И запускаем нашу менеджер проектов:
python3 /home/odoo/projects/odoo_dev_project/odpm.py --init https://github.com/aayartsev/odoo_demo_project.git
Когда система спросит какую версию вы odoo вы хотите запустить то пишите 16.0, т.к. модули в этом проекте рассчитаны на нее.
После этого вы можете открыть новое окно VSCode и отрыть новое подключение к WSL, при выборе папке уже выбирайте /home/odoo/projects/odoo_demo_project-16
Если вы хотите сделать проект для 17 версии, то создайте в каталог /home/odoo/projects/odoo_demo_project-17
и попробуйте сделать это самостоятельно, глядя на документацию самого проекта. Все модули и ветки работаю и в 17 версии, но требуют небольшой правки. При запуске odoo сама вам об этом напишет и откажется запускаться. Это будет первая тренировка на отладку системы. Обратите внимание на плашку , нажав на которую, вы попадете на русскую версию документации.
Для работы с git репозиториями нужно будет сформировать ключи и отправить публичную часть на git сервер. Как это сделать, вы можете прочитать тут, вас интересует именно Linux, хотя на компьютере у вас стоить Windows.
Перезапустить систему
Остановить систему можно нажатием сочетания клавиш Ctrl+C
, затем нажать кнопку вверх и нажать Enter
, таким образом система будет перезапущена
Обсуждение
Обсудить, указать на ошибки и опечатки можно здесь