chore: set backend default port to 9080
This commit is contained in:
@@ -20,7 +20,7 @@ RUN CGO_ENABLED=0 GOOS=linux go build \
|
||||
FROM swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/library/alpine:3.23
|
||||
|
||||
ENV TZ=Asia/Shanghai \
|
||||
MANAGED_PORTAL_HTTP_ADDR=:8080 \
|
||||
MANAGED_PORTAL_HTTP_ADDR=:9080 \
|
||||
MANAGED_PORTAL_REGISTRY_PATH=/app/managed_services.yaml
|
||||
|
||||
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \
|
||||
@@ -32,6 +32,6 @@ WORKDIR /app
|
||||
COPY --from=builder /build/managed-portal /app/managed-portal
|
||||
COPY managed_services.yaml /app/managed_services.yaml
|
||||
|
||||
EXPOSE 8080
|
||||
EXPOSE 9080
|
||||
|
||||
CMD ["/app/managed-portal"]
|
||||
|
||||
92
README.md
92
README.md
@@ -1,31 +1,51 @@
|
||||
# Managed Portal
|
||||
# Managed Portal 管理端
|
||||
|
||||
Standalone management portal for:
|
||||
`managed-portal` 是从原 `video_recognition_local` 项目中拆出的独立管理端,负责管理“被管理服务”和“网页设备”两类能力。它不依赖原 `3000` 端口主项目运行,默认以前端 `13000` 端口对外提供入口,后端默认监听 `9080`。
|
||||
|
||||
- managed child services
|
||||
- web device scanning and proxy access
|
||||
- copied child service source under `managed/`
|
||||
## 功能范围
|
||||
|
||||
## Status
|
||||
- 被管理服务:查看服务列表、服务详情、容器状态、RTSP 配置、重启容器、结果摘要、结果文件预览和下载
|
||||
- 网页设备:扫描本机所在网段的 80 端口网页设备,生成代理访问地址和直连转发地址
|
||||
- 子服务源码:已内置 `store_dwell_alert` 和 `people_flow_project` 两个子项目源码
|
||||
|
||||
This repository is being split out from `video_recognition_local`.
|
||||
## 目录结构
|
||||
|
||||
Current target shape:
|
||||
```text
|
||||
managed-portal/
|
||||
├── cmd/managed-portal/ # Go 后端入口
|
||||
├── internal/ # Go 后端模块
|
||||
├── web/ # Vue3 + Element Plus 前端
|
||||
├── managed/ # 被管理子服务源码
|
||||
│ ├── store_dwell_alert/
|
||||
│ └── people_flow_project/
|
||||
├── deploy/ # Docker Compose 部署文件
|
||||
├── managed_services.yaml # 被管理服务注册表
|
||||
└── Dockerfile # 门户后端镜像
|
||||
```
|
||||
|
||||
- backend: Go service on `:8080`
|
||||
- frontend: Vue 3 + Element Plus
|
||||
- public entry: `:13000`
|
||||
## 默认端口
|
||||
|
||||
## Planned local commands
|
||||
- 门户后端:`9080`
|
||||
- 门户前端:`13000`
|
||||
- `store-dwell-alert` 子服务 API:`18081`
|
||||
- `people-flow-project` 子服务 API:`18082`
|
||||
|
||||
Backend:
|
||||
后端端口可通过环境变量覆盖:
|
||||
|
||||
```bash
|
||||
MANAGED_PORTAL_HTTP_ADDR=:9080
|
||||
```
|
||||
|
||||
## 本机开发
|
||||
|
||||
后端:
|
||||
|
||||
```bash
|
||||
go test ./...
|
||||
go run ./cmd/managed-portal
|
||||
```
|
||||
|
||||
Frontend:
|
||||
前端:
|
||||
|
||||
```bash
|
||||
cd web
|
||||
@@ -34,27 +54,53 @@ pnpm dev
|
||||
pnpm build
|
||||
```
|
||||
|
||||
Docker:
|
||||
本机开发时,前端默认会把 `/api` 和 `/proxy` 代理到 `http://localhost:9080`。如果后端用其他端口启动,可以覆盖:
|
||||
|
||||
```bash
|
||||
VITE_API_PROXY_TARGET=http://127.0.0.1:9080 pnpm dev --host 127.0.0.1 --port 13000
|
||||
```
|
||||
|
||||
## Docker 部署
|
||||
|
||||
完整独立栈包含四个服务:
|
||||
|
||||
- `managed-portal`
|
||||
- `managed-portal-web`
|
||||
- `store-dwell-alert`
|
||||
- `people-flow-project`
|
||||
|
||||
启动:
|
||||
|
||||
```bash
|
||||
cd deploy
|
||||
docker compose --env-file managed-portal.env up -d --build
|
||||
```
|
||||
|
||||
## Child services
|
||||
访问:
|
||||
|
||||
The child service source is part of this repository:
|
||||
```text
|
||||
http://<服务器IP>:13000/
|
||||
```
|
||||
|
||||
- `managed/store_dwell_alert`
|
||||
- `managed/people_flow_project`
|
||||
## 模型权重
|
||||
|
||||
The default Compose stack builds and starts both child services alongside the portal.
|
||||
|
||||
Before building the child service images, provide the runtime weights expected by
|
||||
their Dockerfiles:
|
||||
子服务镜像构建前需要以下权重文件:
|
||||
|
||||
- `managed/store_dwell_alert/weights/yolo11n.pt`
|
||||
- `managed/people_flow_project/weights/yolo11n.pt`
|
||||
- `managed/people_flow_project/weights/deepface/age_model_weights.h5`
|
||||
- `managed/people_flow_project/weights/deepface/gender_model_weights.h5`
|
||||
- `managed/people_flow_project/weights/deepface/retinaface.h5`
|
||||
|
||||
这些权重文件体积较大,默认被子项目 `.gitignore` 忽略,不会随 Git 提交上传。部署机器上需要提前放到对应路径,或通过制品仓库、对象存储、Git LFS 等方式分发。
|
||||
|
||||
## 被管理服务注册表
|
||||
|
||||
`managed_services.yaml` 描述门户要管理的子服务。Docker Compose 部署时,默认通过容器 DNS 访问:
|
||||
|
||||
```yaml
|
||||
api_base_url: http://store-dwell-alert:18081
|
||||
api_base_url: http://people-flow-project:18082
|
||||
```
|
||||
|
||||
如果改成本机进程方式运行子服务,可以把地址调整为 `http://127.0.0.1:18081` 和 `http://127.0.0.1:18082`。
|
||||
|
||||
@@ -13,7 +13,7 @@ services:
|
||||
- people-flow-project
|
||||
environment:
|
||||
TZ: ${TZ:-Asia/Shanghai}
|
||||
MANAGED_PORTAL_HTTP_ADDR: ":8080"
|
||||
MANAGED_PORTAL_HTTP_ADDR: ":9080"
|
||||
MANAGED_PORTAL_REGISTRY_PATH: "/app/managed_services.yaml"
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
|
||||
@@ -10,7 +10,7 @@ type Config struct {
|
||||
|
||||
func Load() *Config {
|
||||
cfg := &Config{
|
||||
HTTPAddr: ":8080",
|
||||
HTTPAddr: ":9080",
|
||||
WebDistDir: "web/dist",
|
||||
RegistryPath: "managed_services.yaml",
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ server {
|
||||
}
|
||||
|
||||
location /api/ {
|
||||
proxy_pass http://managed-portal:8080/api/;
|
||||
proxy_pass http://managed-portal:9080/api/;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
@@ -29,7 +29,7 @@ server {
|
||||
}
|
||||
|
||||
location ^~ /proxy/ {
|
||||
proxy_pass http://managed-portal:8080/proxy/;
|
||||
proxy_pass http://managed-portal:9080/proxy/;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
|
||||
@@ -3,7 +3,7 @@ import vue from "@vitejs/plugin-vue";
|
||||
import { resolve } from "path";
|
||||
|
||||
const devPort = Number(process.env.VITE_DEV_PORT || 13000);
|
||||
const apiTarget = process.env.VITE_API_PROXY_TARGET || "http://localhost:8080";
|
||||
const apiTarget = process.env.VITE_API_PROXY_TARGET || "http://localhost:9080";
|
||||
|
||||
export default defineConfig({
|
||||
plugins: [vue()],
|
||||
|
||||
Reference in New Issue
Block a user