# ============================================================================= # Nacos 2.4.3 自托管 —— standalone + 外部 MySQL 后端 + lean JVM(切片一 阶段〇 B1) # ----------------------------------------------------------------------------- # 配置控制面设计 §3.7:game-cloud 本是 Spring Cloud Alibaba,Nacos 是其原生生产基建 # (配置中心 + 服务发现)。自托管在 mini-infra,纯增量、不动既有 9 个容器。 # # 三条部署纪律都编进了这里: # - MODE=standalone:镜像默认是 cluster 模式(实测启动 banner "Running in cluster mode"), # 单机自托管必须显式压成 standalone,否则起不来。 # - lean JVM 512m:mini-infra 可用内存有限,Nacos 默认 -Xmx2g 会挤压 RAGflow/MySQL。 # standalone + 单操作者(dev/MVP)512m 足够,显式压死默认 2g。 # - network_mode: host:与既有 infra-* 容器一致,直连本机 3306 MySQL;占 8848(HTTP)、 # 9848(gRPC client)、9849(gRPC server)三个 host 端口(实测均未被既有容器占用)。 # # 密钥注入:全部经 ${VAR} 从同目录 .env 读取(compose 起时自动加载),compose 文件本身 # 不落任何明文密钥;.env 只在服务器上 chmod 600 存在、不入仓。密钥权威副本见 # docs/内网凭据与端点.md(内网阶段密钥进文档铁律)。.env 需含: # MYSQL_ROOT_PW / NACOS_AUTH_TOKEN / NACOS_AUTH_IDENTITY_KEY / NACOS_AUTH_IDENTITY_VALUE # # admin 账号初始化:v2.4.3 已移除内置 nacos/nacos 默认账号,且该镜像**不认** # NACOS_AUTH_ADMIN_PASSWORD 环境变量(实测 docker-startup.sh 无此映射)。故首启后需调一次 # 首启 API 建 admin(用户名固定 nacos、仅首次生效): # curl -X POST 'http://127.0.0.1:8848/nacos/v1/auth/users/admin' -d 'password=<见凭据文档>' # ============================================================================= services: nacos: image: nacos/nacos-server:v2.4.3 container_name: infra-nacos restart: unless-stopped network_mode: host environment: MODE: standalone PREFER_HOST_MODE: ip NACOS_SERVER_PORT: "8848" # ── lean JVM:standalone 512m 够用,显式压死默认 2g ── JVM_XMS: "512m" JVM_XMX: "512m" JVM_XMN: "256m" # ── MySQL 后端(复用既有 mini-infra 实例的 nacos 库,不新增 MySQL 实例)── SPRING_DATASOURCE_PLATFORM: mysql MYSQL_SERVICE_HOST: 100.64.0.8 MYSQL_SERVICE_PORT: "3306" MYSQL_SERVICE_DB_NAME: nacos MYSQL_SERVICE_USER: root MYSQL_SERVICE_PASSWORD: "${MYSQL_ROOT_PW}" MYSQL_SERVICE_DB_PARAM: "characterEncoding=utf8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true" # ── 鉴权:生产基建不裸奔,开 token + server identity(密钥见凭据文档)── NACOS_AUTH_ENABLE: "true" NACOS_AUTH_TOKEN: "${NACOS_AUTH_TOKEN}" # token.secret.key:base64、解码后 ≥32 字节 NACOS_AUTH_IDENTITY_KEY: "${NACOS_AUTH_IDENTITY_KEY}" # server 间鉴权请求头名 NACOS_AUTH_IDENTITY_VALUE: "${NACOS_AUTH_IDENTITY_VALUE}" volumes: - ./data/logs:/home/nacos/logs