Files
server-core/serverrun
..

serverrun —— 运行环境与启动脚本

本目录集中 server-core 的运行环境定义与启动脚本,不存放业务代码,也不存放数据 (数据见 ../serverdata)。

定位

场景 使用方式
容器运行(推荐) 项目根 Dockerfile 构建 opc-server 镜像,CMD 即执行 start.sh;统一编排在 ../../deploycode/deploy
本机直接运行 uv syncuv run uvicorn dispatcher:app --host 0.0.0.0 --port 8090(等价于 uv run main.py
本机一键编排基础设施 bash start-all.shredis / 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 本机启动 EMQXMQTT 总线)
envcopy.sh 复制环境变量模板
encrypt-certs.sh 证书/密钥加密脚本
redis/docker-compose.yml 本地 Redis(开发用)
mysql/docker-compose.yml 本地 MySQL(开发用;init.sqlseed_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)。