diff --git a/nacos/nacos-server/2.2.3/Dockerfile b/nacos/nacos-server/2.2.3/Dockerfile new file mode 100644 index 00000000..183b5db2 --- /dev/null +++ b/nacos/nacos-server/2.2.3/Dockerfile @@ -0,0 +1,54 @@ +FROM cr.loongnix.cn/loongson/loongnix-server:8.4 +MAINTAINER qiangxuhui "qiangxuhui@loongson.cn" + +# set environment +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.0-openjdk" \ + NACOS_USER="nacos" \ + JAVA="/usr/lib/jvm/java-1.8.0-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" + +ARG NACOS_VERSION=2.2.3 +ARG HOT_FIX_FLAG="" + +WORKDIR $BASE_DIR + +RUN set -x \ + && yum update -y \ + && yum install -y java-1.8.0-openjdk-devel wget iputils nc vim +RUN wget http://cloud.loongnix.cn/releases/loongarch64abi1/alibaba/nacos/2.2.3/nacos-server-2.2.3.tar.gz -P /home +RUN tar -xzvf /home/nacos-2-0-3.tar.gz -C /home \ + && rm -rf /home/nacos-2-0-3.tar.gz /home/nacos/bin/* /home/nacos/conf/*.properties /home/nacos/conf/*.example /home/nacos/conf/nacos-mysql.sql +RUN yum autoremove -y wget \ + && ln -snf /usr/share/zoneinfo/$TIME_ZONE /etc/localtime && echo $TIME_ZONE > /etc/timezone \ + && yum clean all + + + + +ADD bin/docker-startup.sh bin/docker-startup.sh +ADD conf/application.properties conf/application.properties + + +# 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 + +EXPOSE 8848 +ENTRYPOINT ["bin/docker-startup.sh"] diff --git a/nacos/nacos-server/2.2.3/Makefile b/nacos/nacos-server/2.2.3/Makefile new file mode 100644 index 00000000..0d2e3c77 --- /dev/null +++ b/nacos/nacos-server/2.2.3/Makefile @@ -0,0 +1,28 @@ +# This file is generated by the template. + +REGISTRY?=cr.loongnix.cn +ORGANIZATION?=nacos +REPOSITORY?=nacos-server +TAG?=2.2.3 +LATEST?=true + +IMAGE=$(REGISTRY)/$(ORGANIZATION)/$(REPOSITORY):$(TAG) +LATEST_IMAGE=$(REGISTRY)/$(ORGANIZATION)/$(REPOSITORY):latest + +default: image + +image: + docker build \ + --build-arg http_proxy=$(http_proxy) \ + --build-arg https_proxy=$(https_proxy) \ + -t $(IMAGE) \ + . + +push: + docker push $(IMAGE) + #latest image + @if [ $(LATEST) = "true" ]; \ + then \ + docker tag $(IMAGE) $(LATEST_IMAGE); \ + docker push $(LATEST_IMAGE); \ + fi diff --git a/nacos/nacos-server/2.2.3/bin/docker-startup.sh b/nacos/nacos-server/2.2.3/bin/docker-startup.sh new file mode 100755 index 00000000..04b995e9 --- /dev/null +++ b/nacos/nacos-server/2.2.3/bin/docker-startup.sh @@ -0,0 +1,104 @@ +#!/bin/bash +# Copyright 1999-2018 Alibaba Group Holding Ltd. +# Licensed 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. +set -x +export CUSTOM_SEARCH_NAMES="application" +export CUSTOM_SEARCH_LOCATIONS=file:${BASE_DIR}/conf/ +export MEMBER_LIST="" +PLUGINS_DIR="/home/nacos/plugins/peer-finder" +function print_servers() { + if [[ ! -d "${PLUGINS_DIR}" ]]; then + echo "" >"$CLUSTER_CONF" + for server in ${NACOS_SERVERS}; do + echo "$server" >>"$CLUSTER_CONF" + done + else + bash $PLUGINS_DIR/plugin.sh + sleep 30 + fi +} +#=========================================================================================== +# JVM Configuration +#=========================================================================================== +if [[ "${MODE}" == "standalone" ]]; then + + JAVA_OPT="${JAVA_OPT} -Xms${JVM_XMS} -Xmx${JVM_XMX} -Xmn${JVM_XMN}" + 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${JVM_XMS} -Xmx${JVM_XMX} -Xmn${JVM_XMN} -XX:MetaspaceSize=${JVM_MS} -XX:MaxMetaspaceSize=${JVM_MMS}" + if [[ "${NACOS_DEBUG}" == "y" ]]; then + JAVA_OPT="${JAVA_OPT} -Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n" + fi + JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${BASE_DIR}/logs/java_heapdump.hprof" + JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages" + print_servers +fi + +#=========================================================================================== +# Setting system properties +#=========================================================================================== +# set mode that Nacos Server function of split +if [[ "${FUNCTION_MODE}" == "config" ]]; then + JAVA_OPT="${JAVA_OPT} -Dnacos.functionMode=config" +elif [[ "${FUNCTION_MODE}" == "naming" ]]; then + JAVA_OPT="${JAVA_OPT} -Dnacos.functionMode=naming" +fi +# set nacos server ip +if [[ ! -z "${NACOS_SERVER_IP}" ]]; then + JAVA_OPT="${JAVA_OPT} -Dnacos.server.ip=${NACOS_SERVER_IP}" +fi + +if [[ ! -z "${USE_ONLY_SITE_INTERFACES}" ]]; then + JAVA_OPT="${JAVA_OPT} -Dnacos.inetutils.use-only-site-local-interfaces=${USE_ONLY_SITE_INTERFACES}" +fi + +if [[ ! -z "${PREFERRED_NETWORKS}" ]]; then + JAVA_OPT="${JAVA_OPT} -Dnacos.inetutils.preferred-networks=${PREFERRED_NETWORKS}" +fi + +if [[ ! -z "${IGNORED_INTERFACES}" ]]; then + JAVA_OPT="${JAVA_OPT} -Dnacos.inetutils.ignored-interfaces=${IGNORED_INTERFACES}" +fi + +### If turn on auth system: +if [[ ! -z "${NACOS_AUTH_ENABLE}" ]]; then + JAVA_OPT="${JAVA_OPT} -Dnacos.core.auth.enabled=${NACOS_AUTH_ENABLE}" +fi + +if [[ "${PREFER_HOST_MODE}" == "hostname" ]]; then + JAVA_OPT="${JAVA_OPT} -Dnacos.preferHostnameOverIp=true" +fi +JAVA_OPT="${JAVA_OPT} -Dnacos.member.list=${MEMBER_LIST}" + +JAVA_MAJOR_VERSION=$($JAVA -version 2>&1 | sed -E -n 's/.* version "([0-9]*).*$/\1/p') +if [[ "$JAVA_MAJOR_VERSION" -ge "9" ]]; then + JAVA_OPT="${JAVA_OPT} -Xlog:gc*:file=${BASE_DIR}/logs/nacos_gc.log:time,tags:filecount=10,filesize=102400" +else + JAVA_OPT_EXT_FIX="-Djava.ext.dirs=${JAVA_HOME}/jre/lib/ext:${JAVA_HOME}/lib/ext" + JAVA_OPT="${JAVA_OPT} -Xloggc:${BASE_DIR}/logs/nacos_gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M" +fi + +JAVA_OPT="${JAVA_OPT} -Dloader.path=${BASE_DIR}/plugins,${BASE_DIR}/plugins/health,${BASE_DIR}/plugins/cmdb,${BASE_DIR}/plugins/selector" +JAVA_OPT="${JAVA_OPT} -Dnacos.home=${BASE_DIR}" +JAVA_OPT="${JAVA_OPT} -jar ${BASE_DIR}/target/nacos-server.jar" +JAVA_OPT="${JAVA_OPT} ${JAVA_OPT_EXT}" +JAVA_OPT="${JAVA_OPT} --spring.config.additional-location=${CUSTOM_SEARCH_LOCATIONS}" +JAVA_OPT="${JAVA_OPT} --spring.config.name=${CUSTOM_SEARCH_NAMES}" +JAVA_OPT="${JAVA_OPT} --logging.config=${BASE_DIR}/conf/nacos-logback.xml" +JAVA_OPT="${JAVA_OPT} --server.max-http-header-size=524288" + +echo "Nacos is starting, you can docker logs your container" +exec $JAVA ${JAVA_OPT} diff --git a/nacos/nacos-server/2.2.3/conf/application.properties b/nacos/nacos-server/2.2.3/conf/application.properties new file mode 100644 index 00000000..51252ca8 --- /dev/null +++ b/nacos/nacos-server/2.2.3/conf/application.properties @@ -0,0 +1,49 @@ +# spring +server.servlet.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos} +server.contextPath=/nacos +server.port=${NACOS_APPLICATION_PORT:8848} +server.tomcat.accesslog.max-days=30 +server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i +server.tomcat.accesslog.enabled=${TOMCAT_ACCESSLOG_ENABLED:false} +server.error.include-message=ALWAYS +# default current work dir +server.tomcat.basedir=file:. +#*************** Config Module Related Configurations ***************# +### Deprecated configuration property, it is recommended to use `spring.sql.init.platform` replaced. +#spring.datasource.platform=${SPRING_DATASOURCE_PLATFORM:} +spring.sql.init.platform=${SPRING_DATASOURCE_PLATFORM:} +nacos.cmdb.dumpTaskInterval=3600 +nacos.cmdb.eventTaskInterval=10 +nacos.cmdb.labelTaskInterval=300 +nacos.cmdb.loadDataAtStart=false +db.num=${MYSQL_DATABASE_NUM:1} +db.url.0=jdbc:mysql://${MYSQL_SERVICE_HOST}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false} +db.user.0=${MYSQL_SERVICE_USER} +db.password.0=${MYSQL_SERVICE_PASSWORD} +### The auth system to use, currently only 'nacos' and 'ldap' is supported: +nacos.core.auth.system.type=${NACOS_AUTH_SYSTEM_TYPE:nacos} +### worked when nacos.core.auth.system.type=nacos +### The token expiration in seconds: +nacos.core.auth.plugin.nacos.token.expire.seconds=${NACOS_AUTH_TOKEN_EXPIRE_SECONDS:18000} +### The default token: +nacos.core.auth.plugin.nacos.token.secret.key=${NACOS_AUTH_TOKEN:} +### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay. +nacos.core.auth.caching.enabled=${NACOS_AUTH_CACHE_ENABLE:false} +nacos.core.auth.enable.userAgentAuthWhite=${NACOS_AUTH_USER_AGENT_AUTH_WHITE_ENABLE:false} +nacos.core.auth.server.identity.key=${NACOS_AUTH_IDENTITY_KEY:} +nacos.core.auth.server.identity.value=${NACOS_AUTH_IDENTITY_VALUE:} +## spring security config +### turn off security +nacos.security.ignore.urls=${NACOS_SECURITY_IGNORE_URLS:/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**} +# metrics for elastic search +management.metrics.export.elastic.enabled=false +management.metrics.export.influx.enabled=false +nacos.naming.distro.taskDispatchThreadCount=10 +nacos.naming.distro.taskDispatchPeriod=200 +nacos.naming.distro.batchSyncKeyCount=1000 +nacos.naming.distro.initDataRatio=0.9 +nacos.naming.distro.syncRetryDelay=5000 +nacos.naming.data.warmup=true + + +