chore(config): Make Nacos namespace configurable

- Replace hardcoded public namespace with NACOS_NAMESPACE
- Document nacos init container troubleshooting for 1Panel deploy
This commit is contained in:
Toys-A
2026-08-07 03:04:33 +08:00
parent 16e9d7f9bd
commit 05988c4325
21 changed files with 217 additions and 41 deletions
+84 -3
View File
@@ -385,7 +385,15 @@ dependency failed to start: container haovp-nacos is unhealthy
新版编排不再让业务服务等待 Nacos `healthy`,也不再给 Nacos 配置 Docker healthcheck。这样可以避免 1Panel 因 Nacos 启动慢而判定整个编排失败。同步新版 `docker-compose.1panel.yml` 后,需要删除失败编排或重新创建容器,让新的依赖策略生效。 新版编排不再让业务服务等待 Nacos `healthy`,也不再给 Nacos 配置 Docker healthcheck。这样可以避免 1Panel 因 Nacos 启动慢而判定整个编排失败。同步新版 `docker-compose.1panel.yml` 后,需要删除失败编排或重新创建容器,让新的依赖策略生效。
如果仍失败,查看 Nacos 容器内部日志: 现在编排里新增了 `haovp-nacos-init` 一次性初始化容器。它会先创建 `nacos_config` 库和表,再决定是否导入默认 Nacos 配置。
如果仍失败,优先查看初始化容器日志:
```bash
docker logs --tail 200 haovp-nacos-init
```
再查看 Nacos 容器内部日志:
```bash ```bash
docker logs --tail 200 haovp-nacos docker logs --tail 200 haovp-nacos
@@ -396,8 +404,9 @@ docker logs --tail 200 haovp-nacos
| 问题 | 处理 | | 问题 | 处理 |
| --- | --- | | --- | --- |
| `NACOS_AUTH_TOKEN` 相关报错 | 确认 `.env.1panel` 中 `NACOS_AUTH_TOKEN` 是 Base64,且解码后至少 32 字节 | | `NACOS_AUTH_TOKEN` 相关报错 | 确认 `.env.1panel` 中 `NACOS_AUTH_TOKEN` 是 Base64,且解码后至少 32 字节 |
| `No DataSource set` | 先确认服务器上的 `backend/config/nacos/application-1panel.properties` 是“文件”而不是目录,再确认它被挂载到 `/home/nacos/conf/application.properties`,最后用 `--force-recreate` 重建 `haovp-nacos` | | `No DataSource set` | 先确认服务器上的 `backend/config/nacos/application-1panel.properties` 是“文件”而不是目录,再确认它被挂载到 `/home/nacos/conf/application.properties`,然后看 `haovp-nacos-init` 是否成功完成 |
| 数据库连接失败 | 确认 `haovp-mysql` 正常,且首次初始化没有被中断 | | 数据库连接失败 | 确认 `haovp-mysql` 正常,且 `haovp-nacos-init` 能连上 MySQL |
| 业务服务短暂报 `nacos:9848 Connection refused` | Nacos 2.x 客户端会连接 `8848 + 1000 = 9848` 的 gRPC 端口。启动早期短暂失败后出现 `Success to connect a server [nacos:8848]` 即为自动恢复 |
| 端口占用 | 确认宿主机 `8848` 未被其他服务占用,或修改 `NACOS_HTTP_PORT` | | 端口占用 | 确认宿主机 `8848` 未被其他服务占用,或修改 `NACOS_HTTP_PORT` |
推荐的检查顺序: 推荐的检查顺序:
@@ -405,13 +414,63 @@ docker logs --tail 200 haovp-nacos
```bash ```bash
ls -l /opt/HAOVP/backend/config/nacos/application-1panel.properties ls -l /opt/HAOVP/backend/config/nacos/application-1panel.properties
docker inspect haovp-nacos --format '{{range .Mounts}}{{println .Source "->" .Destination}}{{end}}' docker inspect haovp-nacos --format '{{range .Mounts}}{{println .Source "->" .Destination}}{{end}}'
docker logs --tail 200 haovp-nacos-init
docker rm -f haovp-nacos docker rm -f haovp-nacos
docker rm -f haovp-nacos-init
docker compose --env-file .env.1panel -f docker-compose.1panel.yml up -d --force-recreate nacos docker compose --env-file .env.1panel -f docker-compose.1panel.yml up -d --force-recreate nacos
docker logs --tail 200 haovp-nacos docker logs --tail 200 haovp-nacos
``` ```
如果 `application-1panel.properties` 在服务器上不存在,Docker 可能会把挂载源当成目录处理,Nacos 就还是读不到数据源配置。 如果 `application-1panel.properties` 在服务器上不存在,Docker 可能会把挂载源当成目录处理,Nacos 就还是读不到数据源配置。
如果使用了编排里的 `JAVA_OPT_EXT` 兜底,Nacos 启动日志的 `exec java ...` 行里应出现 `--nacos.plugin.datasource.db.url.0=jdbc:mysql://mysql:3306/nacos_config...`。Nacos Docker 启动脚本会把 `JAVA_OPT_EXT` 追加到 `-jar nacos-server.jar` 后面,所以这里必须按 Spring Boot 命令行参数传入。
如果挂载和启动参数都正确,但仍然是 `No DataSource set`,继续检查 MySQL 里的 Nacos 库表。1Panel 反复创建编排时,`mysql_data` volume 如果已经存在,`/docker-entrypoint-initdb.d/` 下的初始化 SQL 不会再次自动执行:
```bash
cd /opt/HAOVP/backend
set -a
source .env.1panel
set +a
docker exec haovp-mysql mysql -uroot -p"$MYSQL_ROOT_PASSWORD" -e "
SHOW DATABASES LIKE 'nacos_config';
SELECT TABLE_NAME FROM information_schema.TABLES
WHERE TABLE_SCHEMA='nacos_config'
AND TABLE_NAME IN ('config_info','config_info_beta','users','roles');
SELECT COUNT(*) AS config_count FROM nacos_config.config_info;
"
```
如果缺库或缺表,手动补执行初始化:
```bash
docker exec -i haovp-mysql mysql --default-character-set=utf8mb4 -uroot -p"$MYSQL_ROOT_PASSWORD" < ./sql/nacos-schema.sql
docker exec -i haovp-mysql mysql --default-character-set=utf8mb4 -uroot -p"$MYSQL_ROOT_PASSWORD" --force nacos_config < ./sql/nacos-config-init.sql
docker rm -f haovp-nacos
docker compose --env-file .env.1panel -f docker-compose.1panel.yml up -d --force-recreate nacos
```
如果业务服务日志出现 `org.yaml.snakeyaml.parser.ParserException`,并指向 `video-gateway.yaml` 的 `response-body`,说明 Nacos 中已有的配置内容还是旧的错误引号。检查当前内容:
```bash
docker exec haovp-mysql mysql --default-character-set=utf8mb4 -uroot -p"$MYSQL_ROOT_PASSWORD" -N -s -e "SELECT content FROM nacos_config.config_info WHERE data_id='video-gateway.yaml';" | sed -n '50,62p'
```
正确内容应类似:
```yaml
mode: response
response-body: '{"code":500,"message":"服务不可用,请稍后再试"}'
```
如果不是这个格式,在 Nacos 控制台修正 `video-gateway.yaml` 后重启网关:
```bash
docker restart haovp-video-gateway
curl -i "http://127.0.0.1:${GATEWAY_HTTP_PORT:-9000}/recommend/home?page=1&size=12"
```
### 拉取 `haovp/video-*` 镜像失败 ### 拉取 `haovp/video-*` 镜像失败
如果 1Panel 报错类似: 如果 1Panel 报错类似:
@@ -456,6 +515,28 @@ docker logs haovp-video-content
前端 Nginx 会把用户端 `/api/auth/login` 转发为网关 `/auth/login`,把管理端 `/api/admin/auth/login` 转发为网关 `/admin/auth/login`。 前端 Nginx 会把用户端 `/api/auth/login` 转发为网关 `/auth/login`,把管理端 `/api/admin/auth/login` 转发为网关 `/admin/auth/login`。
### 前端接口 502
如果 `curl http://127.0.0.1:${WEB_HTTP_PORT:-18180}/health` 正常,但 `/api/...` 返回 `502 Bad Gateway`,先看前端 Nginx 日志:
```bash
docker logs --tail 120 haovp-frontend-web
```
如果出现 `connect() failed (111: Connection refused) while connecting to upstream`,且 upstream 指向旧的 Docker 内网 IP,说明前端 Nginx 缓存了重建前的 gateway 地址。新版 `nginx.1panel.conf` 已使用 Docker DNS 动态解析;同步配置并重建前端,临时恢复可先执行:
```bash
docker restart haovp-frontend-web
```
如果直连网关仍是 404:
```bash
curl -i "http://127.0.0.1:${GATEWAY_HTTP_PORT:-9000}/recommend/home?page=1&size=12"
```
返回 `No static resource recommend/home` 时,表示 gateway 没加载到 `/recommend/**` 路由,优先按上面的 `video-gateway.yaml` 检查 Nacos 配置。
### 图片或视频无法访问 ### 图片或视频无法访问
前端使用: 前端使用:
+42
View File
@@ -8,10 +8,16 @@ x-service-env: &service-env
SPRING_PROFILES_ACTIVE: ha SPRING_PROFILES_ACTIVE: ha
NACOS_HOST: nacos NACOS_HOST: nacos
NACOS_PORT: 8848 NACOS_PORT: 8848
NACOS_NAMESPACE: ${NACOS_NAMESPACE:-}
NACOS_GROUP: ${NACOS_GROUP:-DEFAULT_GROUP}
NACOS_USERNAME: ${NACOS_USERNAME:-nacos} NACOS_USERNAME: ${NACOS_USERNAME:-nacos}
NACOS_PASSWORD: ${NACOS_PASSWORD:-nacos} NACOS_PASSWORD: ${NACOS_PASSWORD:-nacos}
SPRING_CLOUD_NACOS_DISCOVERY_NAMESPACE: ${NACOS_NAMESPACE:-}
SPRING_CLOUD_NACOS_DISCOVERY_GROUP: ${NACOS_GROUP:-DEFAULT_GROUP}
SPRING_CLOUD_NACOS_DISCOVERY_USERNAME: ${NACOS_USERNAME:-nacos} SPRING_CLOUD_NACOS_DISCOVERY_USERNAME: ${NACOS_USERNAME:-nacos}
SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD: ${NACOS_PASSWORD:-nacos} SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD: ${NACOS_PASSWORD:-nacos}
SPRING_CLOUD_NACOS_CONFIG_NAMESPACE: ${NACOS_NAMESPACE:-}
SPRING_CLOUD_NACOS_CONFIG_GROUP: ${NACOS_GROUP:-DEFAULT_GROUP}
SPRING_CLOUD_NACOS_CONFIG_USERNAME: ${NACOS_USERNAME:-nacos} SPRING_CLOUD_NACOS_CONFIG_USERNAME: ${NACOS_USERNAME:-nacos}
SPRING_CLOUD_NACOS_CONFIG_PASSWORD: ${NACOS_PASSWORD:-nacos} SPRING_CLOUD_NACOS_CONFIG_PASSWORD: ${NACOS_PASSWORD:-nacos}
MYSQL_HOST: mysql MYSQL_HOST: mysql
@@ -103,6 +109,18 @@ services:
MYSQL_SERVICE_DB_PARAM: characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true MYSQL_SERVICE_DB_PARAM: characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
JVM_XMS: ${NACOS_JVM_XMS:-512m} JVM_XMS: ${NACOS_JVM_XMS:-512m}
JVM_XMX: ${NACOS_JVM_XMX:-512m} JVM_XMX: ${NACOS_JVM_XMX:-512m}
JAVA_OPT_EXT: >-
--nacos.plugin.datasource-dialect.type=mysql
--spring.datasource.platform=mysql
--spring.sql.init.platform=mysql
--nacos.plugin.datasource.db.num=1
--nacos.plugin.datasource.db.url.0=jdbc:mysql://mysql:3306/nacos_config?characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
--nacos.plugin.datasource.db.user=root
--nacos.plugin.datasource.db.password=${MYSQL_ROOT_PASSWORD}
--db.num=1
--db.url.0=jdbc:mysql://mysql:3306/nacos_config?characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
--db.user.0=root
--db.password.0=${MYSQL_ROOT_PASSWORD}
NACOS_AUTH_ENABLE: "true" NACOS_AUTH_ENABLE: "true"
NACOS_AUTH_TOKEN: ${NACOS_AUTH_TOKEN} NACOS_AUTH_TOKEN: ${NACOS_AUTH_TOKEN}
NACOS_AUTH_IDENTITY_KEY: serverIdentity NACOS_AUTH_IDENTITY_KEY: serverIdentity
@@ -115,6 +133,30 @@ services:
depends_on: depends_on:
mysql: mysql:
condition: service_healthy condition: service_healthy
nacos-init:
condition: service_completed_successfully
networks:
- haovp-network
nacos-init:
image: mysql:8.0
container_name: haovp-nacos-init
restart: "no"
depends_on:
mysql:
condition: service_healthy
environment:
<<: *common-env
MYSQL_HOST: mysql
MYSQL_PORT: 3306
MYSQL_DB: nacos_config
MYSQL_USER: root
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
volumes:
- ./sql/nacos-schema.sql:/init-sql/nacos-schema.sql:ro
- ./sql/nacos-config-init.sql:/init-sql/nacos-config-init.sql:ro
- ./sql/nacos-init.sh:/init-sql/nacos-init.sh:ro
entrypoint: ["/bin/sh", "/init-sql/nacos-init.sh"]
networks: networks:
- haovp-network - haovp-network
+1 -1
View File
@@ -158,7 +158,7 @@ spring:
scg: scg:
fallback: fallback:
mode: response mode: response
response-body: '{"code":500,"message":"服务不可用,请稍后再试"}' response-body: ''{"code":500,"message":"服务不可用,请稍后再试"}''
gateway: gateway:
ignore: ignore:
+33
View File
@@ -0,0 +1,33 @@
#!/bin/sh
set -eu
: "${MYSQL_ROOT_PASSWORD:?MYSQL_ROOT_PASSWORD is required}"
MYSQL_HOST="${MYSQL_HOST:-mysql}"
MYSQL_PORT="${MYSQL_PORT:-3306}"
MYSQL_DB="${MYSQL_DB:-nacos_config}"
MYSQL_USER="${MYSQL_USER:-root}"
export MYSQL_PWD="$MYSQL_ROOT_PASSWORD"
mysql_exec() {
mysql --default-character-set=utf8mb4 -h "$MYSQL_HOST" -P "$MYSQL_PORT" -u"$MYSQL_USER" "$@"
}
echo "Preparing Nacos database ${MYSQL_DB}..."
mysql_exec -e "CREATE DATABASE IF NOT EXISTS \`${MYSQL_DB}\` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mysql_exec "$MYSQL_DB" < /init-sql/nacos-schema.sql
if row_count="$(mysql_exec -N -s -e "SELECT COUNT(*) FROM \`${MYSQL_DB}\`.config_info;" 2>/dev/null)"; then
:
else
row_count=0
fi
if [ "${row_count}" -eq 0 ]; then
echo "Seeding default Nacos configs..."
mysql_exec "$MYSQL_DB" < /init-sql/nacos-config-init.sql
else
echo "Nacos config already exists, skip seeding."
fi
@@ -8,7 +8,7 @@ spring:
nacos: nacos:
discovery: discovery:
server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848} server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848}
namespace: public namespace: ${NACOS_NAMESPACE:}
group: DEFAULT_GROUP group: DEFAULT_GROUP
sentinel: sentinel:
transport: transport:
@@ -5,7 +5,7 @@ spring:
nacos: nacos:
discovery: discovery:
server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848} server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848}
namespace: public namespace: ${NACOS_NAMESPACE:}
group: DEFAULT_GROUP group: DEFAULT_GROUP
username: ${NACOS_USERNAME:nacos} username: ${NACOS_USERNAME:nacos}
password: ${NACOS_PASSWORD:nacos} password: ${NACOS_PASSWORD:nacos}
@@ -16,8 +16,8 @@ spring:
register-enabled: true register-enabled: true
config: config:
server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848} server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848}
namespace: public namespace: ${NACOS_NAMESPACE:}
group: DEFAULT_GROUP group: DEFAULT_GROUP
username: ${NACOS_USERNAME:nacos} username: ${NACOS_USERNAME:nacos}
password: ${NACOS_PASSWORD:nacos} password: ${NACOS_PASSWORD:nacos}
file-extension: yaml file-extension: yaml
@@ -8,7 +8,7 @@ spring:
nacos: nacos:
discovery: discovery:
server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848} server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848}
namespace: public namespace: ${NACOS_NAMESPACE:}
group: DEFAULT_GROUP group: DEFAULT_GROUP
sentinel: sentinel:
transport: transport:
@@ -5,7 +5,7 @@ spring:
nacos: nacos:
discovery: discovery:
server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848} server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848}
namespace: public namespace: ${NACOS_NAMESPACE:}
group: DEFAULT_GROUP group: DEFAULT_GROUP
username: ${NACOS_USERNAME:nacos} username: ${NACOS_USERNAME:nacos}
password: ${NACOS_PASSWORD:nacos} password: ${NACOS_PASSWORD:nacos}
@@ -16,8 +16,8 @@ spring:
register-enabled: true register-enabled: true
config: config:
server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848} server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848}
namespace: public namespace: ${NACOS_NAMESPACE:}
group: DEFAULT_GROUP group: DEFAULT_GROUP
username: ${NACOS_USERNAME:nacos} username: ${NACOS_USERNAME:nacos}
password: ${NACOS_PASSWORD:nacos} password: ${NACOS_PASSWORD:nacos}
file-extension: yaml file-extension: yaml
@@ -8,7 +8,7 @@ spring:
nacos: nacos:
discovery: discovery:
server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848} server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848}
namespace: public namespace: ${NACOS_NAMESPACE:}
group: DEFAULT_GROUP group: DEFAULT_GROUP
sentinel: sentinel:
transport: transport:
@@ -5,7 +5,7 @@ spring:
nacos: nacos:
discovery: discovery:
server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848} server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848}
namespace: public namespace: ${NACOS_NAMESPACE:}
group: DEFAULT_GROUP group: DEFAULT_GROUP
username: ${NACOS_USERNAME:nacos} username: ${NACOS_USERNAME:nacos}
password: ${NACOS_PASSWORD:nacos} password: ${NACOS_PASSWORD:nacos}
@@ -16,8 +16,8 @@ spring:
register-enabled: true register-enabled: true
config: config:
server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848} server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848}
namespace: public namespace: ${NACOS_NAMESPACE:}
group: DEFAULT_GROUP group: DEFAULT_GROUP
username: ${NACOS_USERNAME:nacos} username: ${NACOS_USERNAME:nacos}
password: ${NACOS_PASSWORD:nacos} password: ${NACOS_PASSWORD:nacos}
file-extension: yaml file-extension: yaml
@@ -8,7 +8,7 @@ spring:
nacos: nacos:
discovery: discovery:
server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848} server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848}
namespace: public namespace: ${NACOS_NAMESPACE:}
group: DEFAULT_GROUP group: DEFAULT_GROUP
sentinel: sentinel:
transport: transport:
@@ -5,7 +5,7 @@ spring:
nacos: nacos:
discovery: discovery:
server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848} server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848}
namespace: public namespace: ${NACOS_NAMESPACE:}
group: DEFAULT_GROUP group: DEFAULT_GROUP
username: ${NACOS_USERNAME:nacos} username: ${NACOS_USERNAME:nacos}
password: ${NACOS_PASSWORD:nacos} password: ${NACOS_PASSWORD:nacos}
@@ -16,8 +16,8 @@ spring:
register-enabled: true register-enabled: true
config: config:
server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848} server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848}
namespace: public namespace: ${NACOS_NAMESPACE:}
group: DEFAULT_GROUP group: DEFAULT_GROUP
username: ${NACOS_USERNAME:nacos} username: ${NACOS_USERNAME:nacos}
password: ${NACOS_PASSWORD:nacos} password: ${NACOS_PASSWORD:nacos}
file-extension: yaml file-extension: yaml
@@ -14,7 +14,7 @@ spring:
nacos: nacos:
discovery: discovery:
server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848} server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848}
namespace: public namespace: ${NACOS_NAMESPACE:}
group: DEFAULT_GROUP group: DEFAULT_GROUP
# 移除以下健康检查配置 # 移除以下健康检查配置
# heart-beat-interval: 5000 # heart-beat-interval: 5000
@@ -5,7 +5,7 @@ spring:
nacos: nacos:
discovery: discovery:
server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848} server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848}
namespace: public namespace: ${NACOS_NAMESPACE:}
group: DEFAULT_GROUP group: DEFAULT_GROUP
username: ${NACOS_USERNAME:nacos} username: ${NACOS_USERNAME:nacos}
password: ${NACOS_PASSWORD:nacos} password: ${NACOS_PASSWORD:nacos}
@@ -19,8 +19,8 @@ spring:
register-enabled: true register-enabled: true
config: config:
server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848} server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848}
namespace: public namespace: ${NACOS_NAMESPACE:}
group: DEFAULT_GROUP group: DEFAULT_GROUP
username: ${NACOS_USERNAME:nacos} username: ${NACOS_USERNAME:nacos}
password: ${NACOS_PASSWORD:nacos} password: ${NACOS_PASSWORD:nacos}
file-extension: yaml file-extension: yaml
@@ -8,7 +8,7 @@ spring:
nacos: nacos:
discovery: discovery:
server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848} server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848}
namespace: public namespace: ${NACOS_NAMESPACE:}
group: DEFAULT_GROUP group: DEFAULT_GROUP
sentinel: sentinel:
transport: transport:
@@ -5,7 +5,7 @@ spring:
nacos: nacos:
discovery: discovery:
server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848} server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848}
namespace: public namespace: ${NACOS_NAMESPACE:}
group: DEFAULT_GROUP group: DEFAULT_GROUP
username: ${NACOS_USERNAME:nacos} username: ${NACOS_USERNAME:nacos}
password: ${NACOS_PASSWORD:nacos} password: ${NACOS_PASSWORD:nacos}
@@ -16,8 +16,8 @@ spring:
register-enabled: true register-enabled: true
config: config:
server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848} server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848}
namespace: public namespace: ${NACOS_NAMESPACE:}
group: DEFAULT_GROUP group: DEFAULT_GROUP
username: ${NACOS_USERNAME:nacos} username: ${NACOS_USERNAME:nacos}
password: ${NACOS_PASSWORD:nacos} password: ${NACOS_PASSWORD:nacos}
file-extension: yaml file-extension: yaml
@@ -48,16 +48,16 @@
video_id as videoId, video_id as videoId,
SUM( SUM(
CASE CASE
<foreach collection="weights.entrySet()" item="entry"> <foreach collection="weights" index="behaviorType" item="weight">
WHEN behavior_type = #{entry.key} THEN behavior_weight * #{entry.value} WHEN behavior_type = #{behaviorType} THEN behavior_weight * #{weight}
</foreach> </foreach>
ELSE behavior_weight ELSE behavior_weight
END END
) as score ) as score
FROM recommend_user_behavior FROM recommend_user_behavior
WHERE WHERE 1 = 1
<if test="startTime != null"> <if test="startTime != null">
create_time >= #{startTime} AND create_time >= #{startTime}
</if> </if>
<if test="behaviorTypes != null and behaviorTypes.size > 0"> <if test="behaviorTypes != null and behaviorTypes.size > 0">
AND behavior_type IN AND behavior_type IN
@@ -69,4 +69,4 @@
ORDER BY score DESC ORDER BY score DESC
LIMIT #{limit} LIMIT #{limit}
</select> </select>
</mapper> </mapper>
@@ -8,7 +8,7 @@ spring:
nacos: nacos:
discovery: discovery:
server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848} server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848}
namespace: public namespace: ${NACOS_NAMESPACE:}
group: DEFAULT_GROUP group: DEFAULT_GROUP
sentinel: sentinel:
transport: transport:
@@ -5,7 +5,7 @@ spring:
nacos: nacos:
discovery: discovery:
server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848} server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848}
namespace: public namespace: ${NACOS_NAMESPACE:}
group: DEFAULT_GROUP group: DEFAULT_GROUP
username: ${NACOS_USERNAME:nacos} username: ${NACOS_USERNAME:nacos}
password: ${NACOS_PASSWORD:nacos} password: ${NACOS_PASSWORD:nacos}
@@ -16,8 +16,8 @@ spring:
register-enabled: true register-enabled: true
config: config:
server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848} server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848}
namespace: public namespace: ${NACOS_NAMESPACE:}
group: DEFAULT_GROUP group: DEFAULT_GROUP
username: ${NACOS_USERNAME:nacos} username: ${NACOS_USERNAME:nacos}
password: ${NACOS_PASSWORD:nacos} password: ${NACOS_PASSWORD:nacos}
file-extension: yaml file-extension: yaml
@@ -5,6 +5,8 @@ server {
root /usr/share/nginx/html; root /usr/share/nginx/html;
index index.html; index index.html;
resolver 127.0.0.11 valid=10s ipv6=off;
client_max_body_size 1024m; client_max_body_size 1024m;
gzip on; gzip on;
@@ -15,8 +17,14 @@ server {
try_files $uri $uri/ /index.html; try_files $uri $uri/ /index.html;
} }
location ~ /\.(?!well-known(?:/|$)) {
return 404;
}
location /api/admin/ { location /api/admin/ {
proxy_pass http://video-gateway:9000/admin/; set $gateway_upstream video-gateway:9000;
rewrite ^/api/admin/(.*)$ /admin/$1 break;
proxy_pass http://$gateway_upstream;
proxy_http_version 1.1; proxy_http_version 1.1;
proxy_set_header Host $host; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
@@ -28,7 +36,9 @@ server {
} }
location /media/ { location /media/ {
proxy_pass http://minio:9000/; set $minio_upstream minio:9000;
rewrite ^/media/(.*)$ /$1 break;
proxy_pass http://$minio_upstream;
proxy_http_version 1.1; proxy_http_version 1.1;
proxy_set_header Host $host; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
@@ -5,6 +5,8 @@ server {
root /usr/share/nginx/html; root /usr/share/nginx/html;
index index.html; index index.html;
resolver 127.0.0.11 valid=10s ipv6=off;
client_max_body_size 1024m; client_max_body_size 1024m;
gzip on; gzip on;
@@ -15,8 +17,14 @@ server {
try_files $uri $uri/ /index.html; try_files $uri $uri/ /index.html;
} }
location ~ /\.(?!well-known(?:/|$)) {
return 404;
}
location /api/ { location /api/ {
proxy_pass http://video-gateway:9000/; set $gateway_upstream video-gateway:9000;
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://$gateway_upstream;
proxy_http_version 1.1; proxy_http_version 1.1;
proxy_set_header Host $host; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
@@ -28,7 +36,9 @@ server {
} }
location /media/ { location /media/ {
proxy_pass http://minio:9000/; set $minio_upstream minio:9000;
rewrite ^/media/(.*)$ /$1 break;
proxy_pass http://$minio_upstream;
proxy_http_version 1.1; proxy_http_version 1.1;
proxy_set_header Host $host; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;