blob: 528478f2446c022c7045dddba53d85bd2600b491 [file] [log] [blame] [view]
---
{
"title": "Doris Docker quick build development environment",
"language": "en"
}
---
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
# Doris Docker quick build development environment
## Related detailed document navigation
- [Developing mirror compilation using Docker](/docs/install/source-install/compilation)
- [Deploying Doris](/docs/install/install-deploy)
- [VSCode Be Development Debugging](./be-vscode-dev.md)
## Environment preparation
- Install Docker
- VSCode
- Remote plugin
## Build image
create dockerfile
VSCode replace all by using Ctrl-d
- <!!! your user !!!>
- <!!! your user password !!!>
- <!!! root password !!!>
- <!!! your git email !!!>
- <!!! your git username !!!>
```dockerfile
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
# safer usage, create new 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 !!!>"
# install zsh and oh my zsh, easier to use on, you can remove it if you don't need it
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
```
run build command
```shell
docker build -t doris .
```
run image
note! [problems with mounting](../../docs/install/source-install/compilation-general.md)
> See the link above: It is recommended to run the image by mounting the local Doris source code directory as a volume .....
if you are developing on windows, mounting may cause cross-filesystem access problems, please consider setting it manually
`--cap-add SYS_PTRACE` parameter allows dockers to use ptrace, making it easier for us to use ptrace and gdb remote debugging functions.
```shell
docker run -it --cap-add SYS_PTRACE doris:latest /bin/bash
```
if you installed zsh, replace plugins in ~/.zshrc after running the container
```
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)
```
create directory and download doris
```shell
su <your user>
mkdir code && cd code
git clone https://github.com/apache/doris.git
cd doris
git submodule update --init --recursive
```
## Compile
Note:
use the following command first time compiling
```shell
sh build.sh --clean --be --fe --ui
```
it is because build-env-for-0.15.0 version image upgraded thrift(0.9 -> 0.13), so you need to use --clean command to force use new version of thrift to generate code files, otherwise it will cause incompatibilities.
compile Doris
```shell
sh build.sh
```
## Run
manually create `meta_dir` metadata storage location, default value is `${DORIS_HOME}/doris-meta`
```shell
mkdir meta_dir
```
launch FE
```shell
cd output/fe
sh bin/start_fe.sh --daemon
```
launch BE
```shell
cd output/be
sh bin/start_be.sh --daemon
```
mysql-client connect
```shell
mysql -h 127.0.0.1 -P 9030 -u root
```