Files
doris/docs/en/developer/developer-guide/docker-dev.md
2022-06-20 09:24:49 +08:00

162 lines
4.2 KiB
Markdown

---
{
"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.md#developing-mirror-compilation-using-docker-recommended)
- [Deploying Doris](../../docs/install/install-deploy.md#cluster-deployment)
- [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
```bash
docker build -t doris .
```
run image
note! [problems with mounting](../../docs/install/source-install/compilation.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
```bash
docker run -it 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
```bash
su <your user>
mkdir code && cd code
git clone https://github.com/apache/incubator-doris.git
```
## Compile
Note:
use the following command first time compiling
```bash
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
```bash
sh build.sh
```
## Run
manually create `meta_dir` metadata storage location, default value is `${DORIS_HOME}/doris-meta`
```bash
mkdir meta_dir
```
launch FE
```bash
cd output/fe
sh bin/start_fe.sh --daemon
```
launch BE
```bash
cd output/be
sh bin/start_be.sh --daemon
```
mysql-client connect
```bash
mysql -h 127.0.0.1 -P 9030 -u root
```