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:
+84
-3
@@ -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 配置。
|
||||||
|
|
||||||
### 图片或视频无法访问
|
### 图片或视频无法访问
|
||||||
|
|
||||||
前端使用:
|
前端使用:
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user