diff --git a/build/Dockerfile b/build/Dockerfile index 7095c82d..5ce044fa 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -1,49 +1,52 @@ -FROM alpine:latest -LABEL maintainer="pader " +FROM bitnami/minideb:bookworm AS installer +RUN install_packages wget ca-certificates +ARG NACOS_VERSION=2.4.3 +ARG HOT_FIX_FLAG="" # 安装依赖 -RUN apk add --no-cache openjdk8-jre-base curl iputils ncurses vim libcurl bash +RUN set -x \ + && wget -O /var/tmp/nacos-server.tar.gz https://github.com/alibaba/nacos/releases/download/${NACOS_VERSION}${HOT_FIX_FLAG}/nacos-server-${NACOS_VERSION}.tar.gz \ + && tar -xzvf /var/tmp/nacos-server.tar.gz -C /home \ + && rm -rf /var/tmp/nacos-server.tar.gz /home/nacos/bin/* /home/nacos/conf/*.properties /home/nacos/conf/*.example /home/nacos/conf/nacos-mysql.sql -# 设置环境变量 +FROM bitnami/java:1.8-debian-12 + +# set env ENV MODE="cluster" \ PREFER_HOST_MODE="ip"\ BASE_DIR="/home/nacos" \ CLASSPATH=".:/home/nacos/conf:$CLASSPATH" \ CLUSTER_CONF="/home/nacos/conf/cluster.conf" \ FUNCTION_MODE="all" \ - JAVA_HOME="/usr/lib/jvm/java-1.8-openjdk" \ NACOS_USER="nacos" \ - JAVA="/usr/lib/jvm/java-1.8-openjdk/bin/java" \ - JVM_XMS="1g" \ - JVM_XMX="1g" \ - JVM_XMN="512m" \ - JVM_MS="128m" \ - JVM_MMS="320m" \ NACOS_DEBUG="n" \ TOMCAT_ACCESSLOG_ENABLED="false" \ - TIME_ZONE="Asia/Shanghai" + TZ="Asia/Shanghai" +# build target version ARG NACOS_VERSION=2.4.3 ARG HOT_FIX_FLAG="" WORKDIR $BASE_DIR -# 下载并安装 Nacos -RUN set -x \ - && curl -SL "https://github.com/alibaba/nacos/releases/download/${NACOS_VERSION}${HOT_FIX_FLAG}/nacos-server-${NACOS_VERSION}.tar.gz" -o nacos-server.tar.gz \ - && tar -xzvf nacos-server.tar.gz -C /home \ - && rm -rf nacos-server.tar.gz /home/nacos/bin/* /home/nacos/conf/*.properties /home/nacos/conf/*.example /home/nacos/conf/nacos-mysql.sql \ - && ln -snf /usr/share/zoneinfo/$TIME_ZONE /etc/localtime && echo $TIME_ZONE > /etc/timezone +# copy bin to workdir +COPY --from=installer ["/home/nacos", "/home/nacos"] ADD bin/docker-startup.sh bin/docker-startup.sh ADD conf/application.properties conf/application.properties +# add nonroot +RUN useradd -r -u 1001 -g root nacos +RUN find / -perm /6000 -type f -exec chmod a-s {} \; || true + # 设置启动日志目录 RUN mkdir -p logs \ - && touch logs/start.out \ - && ln -sf /dev/stdout logs/start.out \ - && ln -sf /dev/stderr logs/start.out \ + && touch logs/start.out \ + && ln -sf /dev/stdout logs/start.out \ + && ln -sf /dev/stderr logs/start.out \ + && chown -R nacos:root /home/nacos \ && chmod +x bin/docker-startup.sh +USER 1001 EXPOSE 8848 -ENTRYPOINT ["sh","bin/docker-startup.sh"] \ No newline at end of file +ENTRYPOINT ["sh","bin/docker-startup.sh"] diff --git a/build/Dockerfile.Slim b/build/Dockerfile.Slim index 34344186..26f601e7 100644 --- a/build/Dockerfile.Slim +++ b/build/Dockerfile.Slim @@ -1,16 +1,16 @@ -FROM amd64/buildpack-deps:buster-curl as installer - +FROM bitnami/minideb:bookworm AS installer +RUN install_packages wget ca-certificates ARG NACOS_VERSION=2.4.3 ARG HOT_FIX_FLAG="" RUN set -x \ - && curl -SL --output /var/tmp/nacos-server.tar.gz https://github.com/alibaba/nacos/releases/download/${NACOS_VERSION}${HOT_FIX_FLAG}/nacos-server-${NACOS_VERSION}.tar.gz \ + && wget -O /var/tmp/nacos-server.tar.gz https://github.com/alibaba/nacos/releases/download/${NACOS_VERSION}${HOT_FIX_FLAG}/nacos-server-${NACOS_VERSION}.tar.gz \ && tar -xzvf /var/tmp/nacos-server.tar.gz -C /home \ && rm -rf /var/tmp/nacos-server.tar.gz /home/nacos/bin/* /home/nacos/conf/*.properties /home/nacos/conf/*.example /home/nacos/conf/nacos-mysql.sql -FROM adoptopenjdk/openjdk8:jre8u372-b07 +FROM bitnami/java:1.8-debian-12 -# set environment +# set env ENV MODE="cluster" \ PREFER_HOST_MODE="ip"\ BASE_DIR="/home/nacos" \ @@ -18,12 +18,6 @@ ENV MODE="cluster" \ CLUSTER_CONF="/home/nacos/conf/cluster.conf" \ FUNCTION_MODE="all" \ NACOS_USER="nacos" \ - JAVA="/opt/java/openjdk/bin/java" \ - JVM_XMS="1g" \ - JVM_XMX="1g" \ - JVM_XMN="512m" \ - JVM_MS="128m" \ - JVM_MMS="320m" \ NACOS_DEBUG="n" \ TOMCAT_ACCESSLOG_ENABLED="false" \ TZ="Asia/Shanghai" @@ -36,13 +30,18 @@ COPY --from=installer ["/home/nacos", "/home/nacos"] ADD bin/docker-startup.sh bin/docker-startup.sh ADD conf/application.properties conf/application.properties +# add user +RUN useradd -r -u 1001 -g root nacos +RUN find / -perm /6000 -type f -exec chmod a-s {} \; || true + # set startup log dir RUN mkdir -p logs \ && cd logs \ && touch start.out \ && ln -sf /dev/stdout start.out \ - && ln -sf /dev/stderr start.out -RUN chmod +x bin/docker-startup.sh + && ln -sf /dev/stderr start.out \ + && chown -R nacos:root /home/nacos +USER 1001 EXPOSE 8848 ENTRYPOINT ["bin/docker-startup.sh"] diff --git a/build/bin/docker-startup.sh b/build/bin/docker-startup.sh index a27bb7eb..28441fb4 100755 --- a/build/bin/docker-startup.sh +++ b/build/bin/docker-startup.sh @@ -47,13 +47,13 @@ XX_MMS=$(join_if_exist "-XX:MaxMetaspaceSize=" ${JVM_MMS}) JAVA_OPT="${JAVA_OPT} -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8 " if [[ "${MODE}" == "standalone" ]]; then - JAVA_OPT="${JAVA_OPT} $Xms $Xmx $Xmn" + JAVA_OPT="${JAVA_OPT} -server -XX:+UseContainerSupport -XX:MaxMetaspaceSize=256m -XX:InitiatingHeapOccupancyPercent=45 -XX:MaxGCPauseMillis=200 -XX:+UseG1GC -XX:NewRatio=2 -XX:MaxRAMPercentage=70.0 -Xss512k" JAVA_OPT="${JAVA_OPT} -Dnacos.standalone=true" else if [[ "${EMBEDDED_STORAGE}" == "embedded" ]]; then JAVA_OPT="${JAVA_OPT} -DembeddedStorage=true" fi - JAVA_OPT="${JAVA_OPT} -server $Xms $Xmx $Xmn $XX_MS $XX_MMS" + JAVA_OPT="${JAVA_OPT} -server -XX:+UseContainerSupport -XX:MaxMetaspaceSize=256m -XX:InitiatingHeapOccupancyPercent=45 -XX:MaxGCPauseMillis=200 -XX:+UseG1GC -XX:NewRatio=2 -XX:MaxRAMPercentage=70.0 -Xss512k -XX:MetaspaceSize=128m" if [[ "${NACOS_DEBUG}" == "y" ]]; then JAVA_OPT="${JAVA_OPT} -Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n" fi diff --git a/build/conf/nacos-logback.xml b/build/conf/nacos-logback.xml new file mode 100644 index 00000000..ca9fe4e0 --- /dev/null +++ b/build/conf/nacos-logback.xml @@ -0,0 +1,668 @@ + + + + + + + + + + ${nacos.home}/logs/cmdb-main.log + true + + ${nacos.home}/logs/cmdb-main.log.%d{yyyy-MM-dd}.%i + 1GB + 3 + 3GB + true + + + %date %level %msg%n%n + UTF-8 + + + + + + %date %level %msg%n%n + UTF-8 + + + + + ${LOG_HOME}/naming-server.log + true + + ${LOG_HOME}/naming-server.log.%d{yyyy-MM-dd}.%i + 1GB + 3 + 3GB + true + + + %date %level %msg%n%n + UTF-8 + + + + + 0 + 1024 + true + + + + + ${LOG_HOME}/naming-raft.log + true + + ${LOG_HOME}/naming-raft.log.%d{yyyy-MM-dd}.%i + 1GB + 7 + 3GB + true + + + %date %level %msg%n%n + UTF-8 + + + + + 0 + 1024 + true + + + + + + ${LOG_HOME}/naming-distro.log + true + + ${LOG_HOME}/naming-distro.log.%d{yyyy-MM-dd}.%i + 1GB + 7 + 3GB + true + + + %date %level %msg%n%n + UTF-8 + + + + + 0 + 1024 + true + + + + + ${LOG_HOME}/naming-event.log + true + + ${LOG_HOME}/naming-event.log.%d{yyyy-MM-dd}.%i + 1GB + 7 + 3GB + true + + + %date %level %msg%n%n + UTF-8 + + + + + 0 + 1024 + true + + + + + ${LOG_HOME}/naming-push.log + true + + ${LOG_HOME}/naming-push.log.%d{yyyy-MM-dd}.%i + 1GB + 7 + 3GB + true + + + %date %level %msg%n%n + UTF-8 + + + + ${LOG_HOME}/naming-rt.log + true + + ${LOG_HOME}/naming-rt.log.%d{yyyy-MM-dd}.%i + 1GB + 7 + 3GB + true + + + %msg%n + UTF-8 + + + + + ${LOG_HOME}/naming-performance.log + true + + ${LOG_HOME}/naming-performance.log.%d{yyyy-MM-dd}.%i + 1GB + 7 + 3GB + true + + + %date %level %msg%n%n + UTF-8 + + + + + + ${LOG_HOME}/config-dump.log + true + + ${LOG_HOME}/config-dump.log.%d{yyyy-MM-dd}.%i + 2GB + 7 + 7GB + true + + + %date %level %msg%n%n + UTF-8 + + + + ${LOG_HOME}/config-pull.log + true + + ${LOG_HOME}/config-pull.log.%d{yyyy-MM-dd}.%i + 20MB + 7 + 128MB + true + + + %date %level %msg%n%n + UTF-8 + + + + ${LOG_HOME}/config-fatal.log + true + + ${LOG_HOME}/config-fatal.log.%d{yyyy-MM-dd}.%i + 20MB + 7 + 128MB + true + + + %date %level %msg%n%n + UTF-8 + + + + ${LOG_HOME}/config-memory.log + true + + ${LOG_HOME}/config-memory.log.%d{yyyy-MM-dd}.%i + 20MB + 7 + 128MB + true + + + %date %level %msg%n%n + UTF-8 + + + + ${LOG_HOME}/config-pull-check.log + true + + ${LOG_HOME}/config-pull-check.log.%d{yyyy-MM-dd}.%i + 1GB + 7 + 3GB + true + + + %msg%n + UTF-8 + + + + + ${LOG_HOME}/cconfig-client-requestonfig-client-request.log + true + + ${LOG_HOME}/config-client-request.log.%d{yyyy-MM-dd}.%i + 2GB + 7 + 7GB + true + + + %date|%msg%n + UTF-8 + + + + + ${LOG_HOME}/config-trace.log + true + + ${LOG_HOME}/config-trace.log.%d{yyyy-MM-dd}.%i + 2GB + 7 + 7GB + true + + + %date|%msg%n + UTF-8 + + + + + ${LOG_HOME}/config-notify.log + true + + ${LOG_HOME}/config-notify.log.%d{yyyy-MM-dd}.%i + 1GB + 7 + 3GB + true + + + %date %level %msg%n%n + UTF-8 + + + + + ${LOG_HOME}/config-server.log + true + + ${LOG_HOME}/config-server.log.%d{yyyy-MM-dd}.%i + 50MB + 7 + 512MB + true + + + %date %level %msg%n%n + UTF-8 + + + + + ${LOG_HOME}/nacos.log + true + + ${LOG_HOME}/nacos.log.%d{yyyy-MM-dd}.%i + 50MB + 7 + 512MB + true + + + %date %level %msg%n%n + UTF-8 + + + + + ${LOG_HOME}/nacos-address.log + true + + ${LOG_HOME}/nacos-address.log.%d{yyyy-MM-dd}.%i + 2GB + 7 + 7GB + true + + + %date %level %msg%n%n + UTF-8 + + + + + + ${LOG_HOME}/core-auth.log + true + + ${LOG_HOME}/core-auth.log.%d{yyyy-MM-dd}.%i + 2GB + 7 + 7GB + true + + + %date %level %msg%n%n + UTF-8 + + + + + ${LOG_HOME}/protocol-raft.log + true + + ${LOG_HOME}/protocol-raft.log.%d{yyyy-MM-dd}.%i + 2GB + 7 + 7GB + true + + + %date %level %msg%n%n + UTF-8 + + + + + ${LOG_HOME}/protocol-distro.log + true + + ${LOG_HOME}/protocol-distro.log.%d{yyyy-MM-dd}.%i + 2GB + 7 + 7GB + true + + + %date %level %msg%n%n + UTF-8 + + + + + ${LOG_HOME}/nacos-cluster.log + true + + ${LOG_HOME}/nacos-cluster.log.%d{yyyy-MM-dd}.%i + 2GB + 7 + 7GB + true + + + %date %level %msg%n%n + UTF-8 + + + + + + ${LOG_HOME}/remote.log + true + + ${LOG_HOME}/remote.log.%d{yyyy-MM-dd}.%i + 2GB + 7 + 7GB + true + + + %date %level %msg%n%n + UTF-8 + + + + + ${LOG_HOME}/remote-digest.log + true + + ${LOG_HOME}/remote-digest.log.%d{yyyy-MM-dd}.%i + 2GB + 7 + 7GB + true + + + %date %level %msg%n%n + UTF-8 + + + + + ${LOG_HOME}/remote-push.log + true + + ${LOG_HOME}/remote-push.log.%d{yyyy-MM-dd}.%i + 2GB + 7 + 7GB + true + + + %date %level %msg%n%n + UTF-8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +