为什么在编译Docker镜像的时候一直报JAVA_HOME未配置

Viewed 7

Dockerfile

使用官方Java镜像作为基础镜像

FROM openjdk:17-jdk-slim

设置环境变量

ENV JAVA_HOME="/usr/lib/jvm/java-17-openjdk-amd64 "
ENV PATH="/opt/apache-doris/fe/bin:$PATH"

更新软件包列表并安装MySQL客户端

RUN apt-get update &&
apt-get install -y default-mysql-client &&
apt-get clean &&
rm -rf /var/lib/apt/lists/*

下载软件至镜像内,可根据需要替换

#ADD ./resource/apache-doris-3.0.0-bin-x64.tar.gz /opt/
#RUN tar -xzf /opt/apache-doris-3.0.0-bin-x64.tar.gz -C /opt/ && \

mkdir -p /opt/apache-doris && \

mv /opt/apache-doris-3.0.0-bin-x64/fe /opt/apache-doris/fe

COPY ./resource/apache-doris-3.0.0-bin-x64.tar.gz /opt/
RUN tar -xzf /opt/apache-doris-3.0.0-bin-x64.tar.gz -C /opt/ &&
mkdir -p /opt/apache-doris &&
mv /opt/apache-doris-3.0.0-bin-x64/fe /opt/apache-doris/fe &&
rm -rf /opt/apache-doris-3.0.0-bin-x64.tar.gz

列出根目录和/opt目录下的文件

RUN ls -l /
RUN ls -l /opt/

添加初始化脚本

ADD ./resource/init_fe.sh /opt/apache-doris/fe/bin/init_fe.sh
RUN chmod 755 /opt/apache-doris/fe/bin/init_fe.sh

设置工作目录

WORKDIR /opt/apache-doris/fe

添加 JAVA_HOME 到 fe.conf 文件

RUN echo "JAVA_HOME=${JAVA_HOME}" >> /opt/apache-doris/fe/conf/fe.conf

启动Doris FE

ENTRYPOINT ["/opt/apache-doris/fe/bin/init_fe.sh"]

fe.conf也配置了JAVA_HOME
2024-10-29T12:44:11+00:00 [Note] [Entrypoint]: Ready to start CURRENT_FE!
The JAVA_HOME environment variable is not set correctly
This environment variable is required to run this program
Note: JAVA_HOME should point to a JDK and not a JRE
You can set JAVA_HOME in the fe.conf configuration file
root@a80c9f07dab0:/opt/apache-doris/fe# cd conf/
root@a80c9f07dab0:/opt/apache-doris/fe/conf# cat fe.conf

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.

#####################################################################

The uppercase properties are read and exported by bin/start_fe.sh.

To see all Frontend configurations,

see fe/src/org/apache/doris/common/Config.java

#####################################################################

CUR_DATE=date +%Y%m%d-%H%M%S

Log dir

LOG_DIR = ${DORIS_HOME}/log

For jdk 8

JAVA_OPTS="-Djavax.security.auth.useSubjectCredsOnly=false -Xss4m -Xmx8192m -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:$LOG_DIR/log/fe.gc.log.$CUR_DATE -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=50M -Dlog4j2.formatMsgNoLookups=true"

For jdk 17, this JAVA_OPTS will be used as default JVM options

JAVA_OPTS_FOR_JDK_17="-Djavax.security.auth.useSubjectCredsOnly=false -Xmx8192m -Xms8192m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$LOG_DIR -Xlog:gc*:$LOG_DIR/fe.gc.log.$CUR_DATE:time,uptime:filecount=10,filesize=50M --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens java.base/jdk.internal.ref=ALL-UNNAMED"

Set your own JAVA_HOME

JAVA_HOME=/path/to/jdk/

the lowercase properties are read by main program.

store metadata, must be created before start FE.

Default value is ${DORIS_HOME}/doris-meta

meta_dir = ${DORIS_HOME}/doris-meta

Default dirs to put jdbc drivers,default value is ${DORIS_HOME}/jdbc_drivers

jdbc_drivers_dir = ${DORIS_HOME}/jdbc_drivers

http_port = 8030
rpc_port = 9020
query_port = 9030
edit_log_port = 9010
arrow_flight_sql_port = -1

Choose one if there are more than one ip except loopback address.

Note that there should at most one ip match this list.

If no ip match this rule, will choose one randomly.

use CIDR format, e.g. 10.10.10.0/24 or IP format, e.g. 10.10.10.1

Default value is empty.

priority_networks = 10.10.10.0/24;192.168.0.0/16

Advanced configurations

log_roll_size_mb = 1024

INFO, WARN, ERROR, FATAL

sys_log_level = INFO

NORMAL, BRIEF, ASYNC

sys_log_mode = NORMAL

sys_log_roll_num = 10

sys_log_verbose_modules = org.apache.doris

audit_log_dir = $LOG_DIR

audit_log_modules = slow_query, query

audit_log_roll_num = 10

meta_delay_toleration_second = 10

qe_max_connection = 1024

qe_query_timeout_second = 300

qe_slow_log_ms = 5000

JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
root@a80c9f07dab0:/opt/apache-doris/fe/conf#

0 Answers