### 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.
Doris Develop Environment based on docker
Preparation
-
Download the Doris code repo
$ cd /to/your/workspace/ $ git clone https://github.com/apache/doris.git $ cd doris $ git submodule update --init --recursiveYou can remove the
.gitdir indoris/to make the dir size smaller. So that the following generated docker image can be smaller. -
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 .
dorisis docker image repository name andv1.0is 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