diff --git a/docker/application-prod.yml b/docker/application-prod.yml
index 7718c2f..94cec1c 100644
--- a/docker/application-prod.yml
+++ b/docker/application-prod.yml
@@ -1,4 +1,4 @@
-# UserBase 生产配置(线上以 nacos 的 userbase-prod.yml 为准,本文件是 nacos 不可达时的兜底)
+# UserBase 生产配置(镜像内自足:配置中心已停用,运行时密码由 Gitea Secrets / projman .env 环境变量注入)
server:
port: 8060
servlet:
@@ -20,8 +20,7 @@ spring:
host: redis-server
port: 6379
database: 0
- # 生产由 nacos application-infra.yaml 注入;此处仅作 nacos 不可达时的兜底,
- # 密码不写死,运行时由容器环境变量 REDIS_PASSWORD 注入(值来自 Gitea Secrets,不入镜像)
+ # 兜底密码运行时由容器环境变量 REDIS_PASSWORD 注入(值来自 Gitea Secrets / projman .env,不入镜像)
password: ${REDIS_PASSWORD}
timeout: 2000ms
data:
@@ -29,14 +28,14 @@ spring:
repositories:
enabled: false
-# datasource:
-# url: jdbc:mysql://mysql8:3306/bsch_userbase?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
-# username: root
-# # 生产由 nacos application-infra.yaml 注入;兜底密码运行时由 DB_PASSWORD 环境变量注入(来自 Gitea Secrets)
-# password: ${DB_PASSWORD}
-# driver-class-name: com.mysql.cj.jdbc.Driver
-# min-idle: 10
-# max-active: 30
+ # 镜像内兜底:db 密码运行时由 DB_PASSWORD 环境变量注入(来自 Gitea Secrets / projman .env,不入镜像)
+ datasource:
+ url: jdbc:mysql://mysql8:3306/bsch_userbase?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
+ username: root
+ password: ${DB_PASSWORD}
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ min-idle: 10
+ max-active: 30
jpa:
database: MySQL
@@ -54,7 +53,7 @@ spring:
host: rabbitmq
port: 5672
username: admin
- # 生产由 nacos application-infra.yaml 注入;兜底密码运行时由 RABBITMQ_PASSWORD 环境变量注入(来自 Gitea Secrets)
+ # 兜底密码运行时由 RABBITMQ_PASSWORD 环境变量注入(值来自 Gitea Secrets / projman .env,不入镜像)
password: ${RABBITMQ_PASSWORD}
listener:
direct:
diff --git a/docker/run-app.sh b/docker/run-app.sh
index 163abd4..15bcb21 100644
--- a/docker/run-app.sh
+++ b/docker/run-app.sh
@@ -1,10 +1,9 @@
#!/bin/sh
-# UserBase 启动入口:配置统一由 Nacos 配置中心在 bootstrap 阶段下发(见 bootstrap.yml)
-# 不再需要手动 curl 拉取;若 nacos 不可达,bootstrap 中 fail-fast=false 会自动回退到
-# 镜像内烤好的 application-prod.yml 兜底默认。
+# UserBase 启动入口:配置中心(nacos)已停用,生产配置=镜像内烤好的 application-prod.yml
+# + 运行时环境变量注入(Gitea Secrets / projman .env:DB_PASSWORD/REDIS_PASSWORD/RABBITMQ_PASSWORD)。
set -e
-echo "[run-app] starting UserBase (profile=prod, nacos=${NACOS_ADDR:-nacos.yunhaixingtong.com:8848}) ..."
+echo "[run-app] starting UserBase (profile=prod) ..."
exec java ${JAVA_OPTS:--Xms512m -Xmx1024m} -Dfile.encoding=UTF-8 -jar /app/userbase.jar \
--spring.profiles.active=prod
diff --git a/pom.xml b/pom.xml
index e1a700f..c80e439 100644
--- a/pom.xml
+++ b/pom.xml
@@ -31,14 +31,6 @@
pom
import
-
-
- com.alibaba.cloud
- spring-cloud-alibaba-dependencies
- 2021.0.5.0
- pom
- import
-
@@ -90,18 +82,6 @@
-
-
- com.alibaba.cloud
- spring-cloud-starter-alibaba-nacos-config
-
-
-
- org.springframework.cloud
- spring-cloud-starter-bootstrap
- 3.1.8
-
-
org.springframework.boot
spring-boot-starter-data-redis
diff --git a/src/main/java/com/yunhai/userbase/service/impl/PropertyEnvConfigSource.java b/src/main/java/com/yunhai/userbase/service/impl/PropertyEnvConfigSource.java
new file mode 100644
index 0000000..332aee0
--- /dev/null
+++ b/src/main/java/com/yunhai/userbase/service/impl/PropertyEnvConfigSource.java
@@ -0,0 +1,30 @@
+package com.yunhai.userbase.service.impl;
+
+import com.yunhai.platform.envconfig.EnvConfigSource;
+import org.springframework.core.env.Environment;
+import org.springframework.stereotype.Service;
+
+/**
+ * env-config 数据源实现:整站已停用 nacos 配置中心,改为从 Spring Environment 读取静态属性。
+ * 键 = {@code yh.env-config.source.},三处可配(优先级由 Environment 决定):
+ * 1) 启动参数 --yh.env-config.source.front='{...}'
+ * 2) 环境变量 YH_ENV_CONFIG_SOURCE_FRONT(projman .env / Gitea Secrets 注入,宽松绑定)
+ * 3) application.yml 内 yh.env-config.source.front 键
+ * 未配置返回 null,平台 EnvConfigService 会归一为 "{}" 返回(前端走同源推断兜底,接口保持 200)。
+ */
+@Service
+public class PropertyEnvConfigSource implements EnvConfigSource {
+
+ private static final String KEY_PREFIX = "yh.env-config.source.";
+
+ private final Environment environment;
+
+ public PropertyEnvConfigSource(Environment environment) {
+ this.environment = environment;
+ }
+
+ @Override
+ public String get(String target) {
+ return environment.getProperty(KEY_PREFIX + target);
+ }
+}
diff --git a/src/main/resources/bootstrap.yml b/src/main/resources/bootstrap.yml
deleted file mode 100644
index c1fd007..0000000
--- a/src/main/resources/bootstrap.yml
+++ /dev/null
@@ -1,47 +0,0 @@
-spring:
- application:
- name: userbase
- # 本地默认 local(不连 nacos);CI 注入 SPRING_PROFILES_ACTIVE=prod
- profiles:
- active: ${SPRING_PROFILES_ACTIVE:local}
- cloud:
- nacos:
- config:
- # ⭐ 本地默认关闭 nacos(profile=local 时完全不连,无 403 噪音,纯走 application.yml)
- # CI 注入 NACOS_CONFIG_ENABLED=true 才启用,拉 prod namespace 配置覆盖 application.yml
- enabled: ${NACOS_CONFIG_ENABLED:false}
- # Nacos 配置中心地址;CI 注入 NACOS_ADDR=nacos:8848(容器内网别名)
- server-addr: ${NACOS_ADDR:nacos.yunhaixingtong.com:8848}
- # 默认指向 prod namespace UUID,避免本地误开时连到空的 dev 命名空间
- # CI 用 SPRING_CLOUD_NACOS_CONFIG_NAMESPACE 覆盖(注意:NACOS_NAMESPACE 这个 env 名不生效,必须用 SPRING_CLOUD_NACOS_CONFIG_NAMESPACE)
- namespace: ${SPRING_CLOUD_NACOS_CONFIG_NAMESPACE:6196f0de-a28d-4894-8f10-e2982b57c6bc}
- # 主配置 group:userbase.yaml 在 USERBASE group(与下方 shared-configs 的 DEFAULT_GROUP 不同组,各自指定)
- group: USERBASE
- # 配置文件格式;最终主配置 dataId = ${spring.application.name}.${file-extension} = userbase.yaml
- file-extension: yaml
- encode: UTF-8
- # nacos 不可达时不强制退出,回退到本地 application.yml 兜底
- fail-fast: false
- # 只读账号(仅读取配置权限);CI 注入 SPRING_CLOUD_NACOS_USERNAME/PASSWORD
- # 注意:凭据必须用顶层 SPRING_CLOUD_NACOS_* env,放在 spring.cloud.nacos.config.* 下不生效(403)
- username: ${SPRING_CLOUD_NACOS_USERNAME:yh-reader}
- password: ${SPRING_CLOUD_NACOS_PASSWORD:123456}
-
- # ============================================================
- # ⭐⭐⭐ 共享配置加载顺序(决定优先级!:排在数组越靠后 = 优先级越高 = 覆盖前面的同 key)
- # 低 1) public 命名空间 application-default.yaml(跨环境公共:日期格式/上传大小等,所有应用都能继承)
- # 中 2) prod 命名空间 application-infra.yaml(仅生产:mysql/redis/rabbitmq 中间件连接)
- # 高 3) prod 命名空间 userbase.yaml(应用级主配置:上传路径/context-path/CAS等,覆盖前两个)
- # 最高 4) 启动命令 -D 参数 / 环境变量(覆盖一切)
- # ============================================================
- shared-configs:
- # ① 1 号(最低优先级):public 命名空间(namespace="" 固定写空字符串)的 application-default.yaml
- - data-id: application-default.yaml
- group: DEFAULT_GROUP
- namespace: "" # ⭐ 固定 = "",强制指向 Nacos "public" 命名空间,不读上面的全局 prod namespace
- refresh: false
-
- # ② 2 号(中等优先级):prod 命名空间(不写 namespace = 继承顶部全局 prod namespace id)的 application-infra.yaml
- - data-id: application-infra.yaml
- group: DEFAULT_GROUP
- refresh: false
\ No newline at end of file