serverrun —— 运行环境与启动脚本
本目录集中 server-core 的运行环境定义与启动脚本,不存放业务代码,也不存放数据
(数据见 ../serverdata)。
定位
| 场景 | 使用方式 |
|---|---|
| 容器运行(推荐) | 项目根 Dockerfile 构建 opc-server 镜像,CMD 即执行 start.sh;统一编排在 ../../deploy(code/deploy) |
| 本机直接运行 | uv sync 后 uv run uvicorn dispatcher:app --host 0.0.0.0 --port 8090(等价于 uv run main.py) |
| 本机一键编排基础设施 | bash start-all.sh(redis / mysql / emqx / compute-engine / core,开发环境用) |
本目录根部的旧
Dockerfile为早期版本,已废弃,镜像构建统一使用项目根Dockerfile。
目录结构
| 路径 | 用途 |
|---|---|
start.sh |
主启动脚本(镜像 CMD 调用):初始化 serverdata 目录 → exec uv run uvicorn dispatcher:app |
start-all.sh |
本机一键编排:基础设施(redis/mysql/emqx) → compute-engine → core |
start-compute.sh |
本机启动算力调度(compute-engine) |
start-emqx.sh |
本机启动 EMQX(MQTT 总线) |
envcopy.sh |
复制环境变量模板 |
encrypt-certs.sh |
证书/密钥加密脚本 |
redis/docker-compose.yml |
本地 Redis(开发用) |
mysql/docker-compose.yml |
本地 MySQL(开发用;init.sql、seed_config.sql 为初始化脚本) |
mqtt/docker-compose.yml |
本地 EMQX(开发用) |
compute-engine/docker-compose.yml |
本地算力调度(旧 new-api 分叉,开发用) |
core/docker-compose.yml |
早期 core 容器编排(历史参考) |
运行环境
| 项 | 要求 | 说明 |
|---|---|---|
| Python | ≥ 3.12 | 镜像基于 python:3.12-slim;本机建议 3.12 |
| 依赖管理 | uv | pyproject.toml + uv.lock 锁定全量依赖 |
| 系统依赖 | build-essential / pkg-config / default-libmysqlclient-dev / libffi-dev | asyncmy / pymysql 编译需要(镜像已内置) |
| Docker | 仅本机编排基础设施时需要 | mysql / redis / mqtt 子目录使用 |
| 外部依赖 | MySQL / Redis / MQTT(EMQX) | 连接地址由环境变量提供(见 ../.env.example) |
启动顺序说明
镜像容器启动时仅运行 start.sh(单进程):初始化数据目录 → 启动 dispatcher:app。
数据库迁移(alembic upgrade head)不在启动脚本内,部署时用
docker compose run --rm opc-server uv run alembic upgrade head 显式执行(见 code/deploy/README.md)。