+11
-12
@@ -1,4 +1,4 @@
|
|||||||
# UserBase 生产配置(线上以 nacos 的 userbase-prod.yml 为准,本文件是 nacos 不可达时的兜底)
|
# UserBase 生产配置(镜像内自足:配置中心已停用,运行时密码由 Gitea Secrets / projman .env 环境变量注入)
|
||||||
server:
|
server:
|
||||||
port: 8060
|
port: 8060
|
||||||
servlet:
|
servlet:
|
||||||
@@ -20,8 +20,7 @@ spring:
|
|||||||
host: redis-server
|
host: redis-server
|
||||||
port: 6379
|
port: 6379
|
||||||
database: 0
|
database: 0
|
||||||
# 生产由 nacos application-infra.yaml 注入;此处仅作 nacos 不可达时的兜底,
|
# 兜底密码运行时由容器环境变量 REDIS_PASSWORD 注入(值来自 Gitea Secrets / projman .env,不入镜像)
|
||||||
# 密码不写死,运行时由容器环境变量 REDIS_PASSWORD 注入(值来自 Gitea Secrets,不入镜像)
|
|
||||||
password: ${REDIS_PASSWORD}
|
password: ${REDIS_PASSWORD}
|
||||||
timeout: 2000ms
|
timeout: 2000ms
|
||||||
data:
|
data:
|
||||||
@@ -29,14 +28,14 @@ spring:
|
|||||||
repositories:
|
repositories:
|
||||||
enabled: false
|
enabled: false
|
||||||
|
|
||||||
# datasource:
|
# 镜像内兜底:db 密码运行时由 DB_PASSWORD 环境变量注入(来自 Gitea Secrets / projman .env,不入镜像)
|
||||||
# url: jdbc:mysql://mysql8:3306/bsch_userbase?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
|
datasource:
|
||||||
# username: root
|
url: jdbc:mysql://mysql8:3306/bsch_userbase?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
|
||||||
# # 生产由 nacos application-infra.yaml 注入;兜底密码运行时由 DB_PASSWORD 环境变量注入(来自 Gitea Secrets)
|
username: root
|
||||||
# password: ${DB_PASSWORD}
|
password: ${DB_PASSWORD}
|
||||||
# driver-class-name: com.mysql.cj.jdbc.Driver
|
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||||
# min-idle: 10
|
min-idle: 10
|
||||||
# max-active: 30
|
max-active: 30
|
||||||
|
|
||||||
jpa:
|
jpa:
|
||||||
database: MySQL
|
database: MySQL
|
||||||
@@ -54,7 +53,7 @@ spring:
|
|||||||
host: rabbitmq
|
host: rabbitmq
|
||||||
port: 5672
|
port: 5672
|
||||||
username: admin
|
username: admin
|
||||||
# 生产由 nacos application-infra.yaml 注入;兜底密码运行时由 RABBITMQ_PASSWORD 环境变量注入(来自 Gitea Secrets)
|
# 兜底密码运行时由 RABBITMQ_PASSWORD 环境变量注入(值来自 Gitea Secrets / projman .env,不入镜像)
|
||||||
password: ${RABBITMQ_PASSWORD}
|
password: ${RABBITMQ_PASSWORD}
|
||||||
listener:
|
listener:
|
||||||
direct:
|
direct:
|
||||||
|
|||||||
+3
-4
@@ -1,10 +1,9 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# UserBase 启动入口:配置统一由 Nacos 配置中心在 bootstrap 阶段下发(见 bootstrap.yml)
|
# UserBase 启动入口:配置中心(nacos)已停用,生产配置=镜像内烤好的 application-prod.yml
|
||||||
# 不再需要手动 curl 拉取;若 nacos 不可达,bootstrap 中 fail-fast=false 会自动回退到
|
# + 运行时环境变量注入(Gitea Secrets / projman .env:DB_PASSWORD/REDIS_PASSWORD/RABBITMQ_PASSWORD)。
|
||||||
# 镜像内烤好的 application-prod.yml 兜底默认。
|
|
||||||
set -e
|
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 \
|
exec java ${JAVA_OPTS:--Xms512m -Xmx1024m} -Dfile.encoding=UTF-8 -jar /app/userbase.jar \
|
||||||
--spring.profiles.active=prod
|
--spring.profiles.active=prod
|
||||||
|
|||||||
@@ -31,14 +31,6 @@
|
|||||||
<type>pom</type>
|
<type>pom</type>
|
||||||
<scope>import</scope>
|
<scope>import</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- Spring Cloud Alibaba(Nacos 配置中心,对齐 Boot 2.7) -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.alibaba.cloud</groupId>
|
|
||||||
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
|
|
||||||
<version>2021.0.5.0</version>
|
|
||||||
<type>pom</type>
|
|
||||||
<scope>import</scope>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</dependencyManagement>
|
</dependencyManagement>
|
||||||
|
|
||||||
@@ -90,18 +82,6 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
<!-- [LOADTEST-METRICS-END] -->
|
<!-- [LOADTEST-METRICS-END] -->
|
||||||
|
|
||||||
<!-- Nacos 配置中心(替代 Spring Cloud Config)。Spring Cloud Alibaba 2021.0.5 适配 Spring Boot 2.7 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.alibaba.cloud</groupId>
|
|
||||||
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<!-- Boot 2.4+ 默认不再处理 bootstrap.yml,需显式引入以继续从 Nacos 拉取配置 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.cloud</groupId>
|
|
||||||
<artifactId>spring-cloud-starter-bootstrap</artifactId>
|
|
||||||
<version>3.1.8</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-data-redis</artifactId>
|
<artifactId>spring-boot-starter-data-redis</artifactId>
|
||||||
|
|||||||
@@ -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.<target>},三处可配(优先级由 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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
|
|
||||||
Reference in New Issue
Block a user