Files
doris/docker
Dongyang Li 377ce45dd1 [fix](build) Install CentOS 7 compatible Node.js and Python 3 (#67819)
### What problem does this PR solve?

Issue Number: None

Related PR: #66690, #67752

Problem Summary:

The compilation image returned to CentOS 7 with glibc 2.17 in #67752,
while the official Node.js 22.12.0 Linux x64 archive installed by the
Dockerfile requires glibc 2.28. Because the Dockerfile only extracts
Node.js and never executes it, the image build succeeds but `node` fails
later when Doris builds the Web UI.

The build-hygiene checks also require Python 3.6 or newer, while the
CentOS 7 image only installs Python 2.

This change:

- installs Python 3 from the configured package repositories;
- uses the Node.js `linux-x64-glibc-217` compatibility archive with a
pinned SHA256;
- runs `node`, `npm`, and a Python version assertion during the Docker
image build so incompatible images fail early.

The compatibility archive is used only as build tooling; Node.js is not
included in Doris runtime packages.

### Release note

None

### Check List (For Author)

- Test:
  - [x] Manual test
- Verified the pinned archive checksum against the upstream
`SHASUMS256.txt`.
- Verified the equivalent Node.js and Python installation flow in
TeamCity Compile build `1042221` on the CentOS 7 image; the full build
finished successfully.
    - Ran `git diff --check`.
- Behavior changed:
- [x] No user-visible runtime behavior. The compilation image now
provides working Node.js 22.12.0 and Python 3.
- Does this need documentation?
  - [x] No.
2026-09-10 22:42:48 +08:00
..
…

Doris Develop Environment based on docker

Preparation

  1. Download the Doris code repo

    $ cd /to/your/workspace/
    $ git clone https://github.com/apache/doris.git
    $ cd doris
    $ git submodule update --init --recursive
    

    You can remove the .git dir in doris/ to make the dir size smaller. So that the following generated docker image can be smaller.

  2. Copy Dockerfile

    $ cd /to/your/workspace/
    $ cp doris/docker/Dockerfile ./
    

After preparation, your workspace should like this:

.
├── Dockerfile
├── doris
│   ├── be
│   ├── bin
│   ├── build.sh
│   ├── conf
│   ├── DISCLAIMER-WIP
│   ├── docker
│   ├── docs
│   ├── env.sh
│   ├── fe
│   ├── ...

Build docker image

$ cd /to/your/workspace/
$ docker build -t doris:v1.0  .

doris is docker image repository name and v1.0 is tag name, you can change them to whatever you like.

Use docker image

This docker image you just built does not contain Doris source code repo. You need to download it first and map it to the container. (You can just use the one you used to build this image before)

$ docker run -it -v /your/local/path/doris/:/root/doris/ doris:v1.0
$ docker run -it -v /your/local/.m2:/root/.m2 -v /your/local/doris-DORIS-x.x.x-release/:/root/doris-DORIS-x.x.x-release/ doris:v1.0

Then you can build source code inside the container.

$ cd /root/doris/
$ sh build.sh

NOTICE

The default JDK version is openjdk 11, if you want to use openjdk 8, you can run the command:

$ alternatives --set java java-1.8.0-openjdk.x86_64
$ alternatives --set javac java-1.8.0-openjdk.x86_64
$ export JAVA_HOME=/usr/lib/jvm/java-1.8.0

The version of jdk you used to run FE must be the same version you used to compile FE.

Latest update time

2022-1-23