Быстрое создание среды разработки Doris с помощью Docker
В этой статье описано, как с помощью Docker создать образ для разработки Doris, скомпилировать и запустить FE/BE, а также использовать VSCode Remote для разработки и отладки.
Подробная документация по теме
- Компиляция с использованием образа Docker для разработки
- Развёртывание
- Разработка и отладка BE в VSCode
1. Подготовка среды
| Компонент | Описание |
|---|---|
| Docker | Установлен и запущен |
| VSCode | Последняя стабильная версия |
| Плагин Remote | VSCode Remote - Containers / SSH |
2. Сборка образа
2.1 Создание Dockerfile
Создайте Dockerfile в рабочем каталоге. В VSCode можно использовать Ctrl+D для замены следующих заполнителей:
| Заполнитель | Значение |
|---|---|
<!!! your user !!!> | Имя пользователя, создаваемого в контейнере |
<!!! your user password !!!> | Пароль этого пользователя |
<!!! root password !!!> | Пароль пользователя root |
<!!! your git email !!!> | Электронная почта для настройки git |
<!!! your git username !!!> | Имя пользователя для настройки git |
FROM apache/incubator-doris:build-env-latest
USER root
WORKDIR /root
RUN echo '<!!! root password !!!>' | passwd root --stdin
RUN yum install -y vim net-tools man wget git mysql lsof bash-completion \
&& cp /var/local/thirdparty/installed/bin/thrift /usr/bin
# For better safety, create a user instead of using root
RUN yum install -y sudo \
&& useradd -ms /bin/bash <!!! your user !!!> && echo <!!! your user password !!!> | passwd <!!! your user !!!> --stdin \
&& usermod -a -G wheel <!!! your user !!!>
USER <!!! your user !!!>
WORKDIR /home/<!!! your user !!!>
RUN git config --global color.ui true \
&& git config --global user.email "<!!! your git email !!!>" \
&& git config --global user.name "<!!! your git username !!!>"
# Optionally install zsh and oh my zsh for easier use; remove if not needed
USER root
RUN yum install -y zsh \
&& chsh -s /bin/zsh <!!! your user !!!>
USER <!!! your user !!!>
RUN wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | zsh \
&& git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions \
&& git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
2.2 Сборка образа
docker build -t doris .
2.3 Запуск образа
Сведения о параметрах монтирования см. в разделе Примечания по монтированию при компиляции с Docker. Рекомендуется запускать образ, монтируя локальный каталог с исходным кодом Doris.
В Windows при монтировании возникают проблемы с доступом между файловыми системами. Настройте монтирование с учётом особенностей вашей среды.
Параметр --cap-add SYS_PTRACE позволяет использовать ptrace внутри Docker, что необходимо для работы с ptrace и удалённой отладки с помощью GDB:
docker run -it --cap-add SYS_PTRACE doris:latest /bin/bash
| Параметр | Назначение |
|---|---|
--cap-add SYS_PTRACE | Разрешает вызов ptrace внутри контейнера (требуется для GDB) |
-it | Интерактивный TTY |
-v <local>:<container> | Монтирует локальный каталог с исходным кодом (при необходимости) |
2.4 Настройка zsh (необязательно)
Если вы установили zsh, замените строку плагинов в ~/.zshrc:
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)
2.5 Получение исходного кода Doris
su <your user>
mkdir code && cd code
git clone https://github.com/apache/doris.git
cd doris
git submodule update --init --recursive
3. Компиляция
При первой компиляции используйте следующую команду для принудительной сборки с очисткой:
sh build.sh --clean --be --fe --ui
В образе build-env-for-0.15.0 версия thrift обновлена (с 0.9 до 0.13), поэтому необходимо использовать --clean, чтобы принудительно сгенерировать файлы кода новой версией thrift. Иначе возникнет несовместимость кода.
После этого компилируйте Doris обычным способом:
sh build.sh
4. Запуск
4.1 Подготовка каталога метаданных
Вручную создайте каталог meta_dir для хранения метаданных. Значение по умолчанию: ${DORIS_HOME}/doris-meta:
mkdir meta_dir
4.2 Запуск FE
cd output/fe
sh bin/start_fe.sh --daemon
4.3 Запуск BE
cd output/be
sh bin/start_be.sh --daemon
4.4 Подключение с помощью mysql-client
mysql -h 127.0.0.1 -P 9030 -u root
5. Часто задаваемые вопросы
Вопрос 1: GDB сообщает об ошибке ptrace: Operation not permitted
Контейнер был запущен без параметра --cap-add SYS_PTRACE. Перезапустите контейнер, добавив этот параметр.
Вопрос 2: При компиляции возникает ошибка несоответствия версии thrift
При первой компиляции не был указан параметр --clean. Выполните очистку и повторную компиляцию с помощью команды из раздела 3.
Вопрос 3: FE / BE завершает работу сразу после запуска
Проверьте, созданы ли каталоги meta_dir и storage_root_path, свободны ли порты и охватывает ли priority_networks IP контейнера.
Вопрос 4: Не удаётся подключиться к процессу для отладки в контейнере VSCode Remote
Не добавлена возможность SYS_PTRACE, либо в плагине VSCode C/C++ не указан подходящий miDebuggerPath.