111 lines
3.1 KiB
YAML
111 lines
3.1 KiB
YAML
|
|
# ============================================================
|
|||
|
|
# 云超服 / YunOPC-Hub —— 三服务业务编排(主编排)
|
|||
|
|
# opc-server (:8090,对外) ← 主 API / admin / website 后端 / 桌面更新源
|
|||
|
|
# opc-im (:8101,内部) ← 即时通讯,由 opc-server 转发对外
|
|||
|
|
# opc-compute (:3000,内部) ← 算力中转/计量,由 opc-server 代理
|
|||
|
|
#
|
|||
|
|
# 本文件只编排三个业务服务;基础设施(MySQL/Redis/EMQX)见
|
|||
|
|
# mysql/、redis/、mqtt/ 子目录,先启动基础设施再加入同一外部网络。
|
|||
|
|
#
|
|||
|
|
# 前置:docker network create opc-network(基础设施与业务共用)
|
|||
|
|
#
|
|||
|
|
# 镜像在各自项目内构建(标准命名):
|
|||
|
|
# server-core → opc-server:latest im-service → opc-im:latest compute → opc-compute:latest
|
|||
|
|
#
|
|||
|
|
# 用法(在本目录执行):
|
|||
|
|
# cp .env.example .env # 填入 MySQL/Redis/MQTT/JWT 等实际值
|
|||
|
|
# docker compose up -d --build # 首次构建并启动业务三服务
|
|||
|
|
# docker compose logs -f # 查看日志
|
|||
|
|
# ============================================================
|
|||
|
|
services:
|
|||
|
|
# ---------- 核心服务端(唯一对外) ----------
|
|||
|
|
opc-server:
|
|||
|
|
build:
|
|||
|
|
context: ..
|
|||
|
|
dockerfile: Dockerfile
|
|||
|
|
image: opc-server:latest
|
|||
|
|
container_name: opc-server
|
|||
|
|
restart: unless-stopped
|
|||
|
|
|
|||
|
|
# 仅对外暴露 8090
|
|||
|
|
ports:
|
|||
|
|
- "8090:8090"
|
|||
|
|
|
|||
|
|
# 环境变量(三个容器共享本目录 .env;各服务只读取自己需要的变量)
|
|||
|
|
env_file:
|
|||
|
|
- .env
|
|||
|
|
|
|||
|
|
# 显式固定启动端口:env_file 会注入全部变量(含 compute 段的 PORT=3000),
|
|||
|
|
# 显式覆盖避免误用;镜像入口已硬编码 8090,此处为兜底防御
|
|||
|
|
environment:
|
|||
|
|
PORT: "8090"
|
|||
|
|
|
|||
|
|
# 数据目录在项目 serverdata(seed/、prompts/ 模板与运行时数据均落宿主机,便于修改即时生效)
|
|||
|
|
volumes:
|
|||
|
|
- ../serverdata:/app/serverdata
|
|||
|
|
- ../uploads:/app/uploads
|
|||
|
|
|
|||
|
|
# 先于 im / compute 之后启动(服务名互访;应用侧有连接重试)
|
|||
|
|
depends_on:
|
|||
|
|
- opc-im
|
|||
|
|
- opc-compute
|
|||
|
|
|
|||
|
|
deploy:
|
|||
|
|
resources:
|
|||
|
|
limits:
|
|||
|
|
memory: 4G
|
|||
|
|
|
|||
|
|
networks:
|
|||
|
|
- opc-network
|
|||
|
|
|
|||
|
|
# ---------- 即时通讯(容器内 :8101,不对外) ----------
|
|||
|
|
opc-im:
|
|||
|
|
build:
|
|||
|
|
context: ../../im-service
|
|||
|
|
dockerfile: Dockerfile
|
|||
|
|
image: opc-im:latest
|
|||
|
|
container_name: opc-im
|
|||
|
|
restart: unless-stopped
|
|||
|
|
|
|||
|
|
env_file:
|
|||
|
|
- .env
|
|||
|
|
|
|||
|
|
volumes:
|
|||
|
|
- ../../im-service/serverdata:/app/serverdata
|
|||
|
|
|
|||
|
|
deploy:
|
|||
|
|
resources:
|
|||
|
|
limits:
|
|||
|
|
memory: 1G
|
|||
|
|
|
|||
|
|
networks:
|
|||
|
|
- opc-network
|
|||
|
|
|
|||
|
|
# ---------- 算力微服务(容器内 :3000,不对外) ----------
|
|||
|
|
opc-compute:
|
|||
|
|
build:
|
|||
|
|
context: ../../compute
|
|||
|
|
dockerfile: Dockerfile
|
|||
|
|
image: opc-compute:latest
|
|||
|
|
container_name: opc-compute
|
|||
|
|
restart: unless-stopped
|
|||
|
|
|
|||
|
|
env_file:
|
|||
|
|
- .env
|
|||
|
|
|
|||
|
|
volumes:
|
|||
|
|
- ../../compute/serverdata:/app/serverdata
|
|||
|
|
|
|||
|
|
deploy:
|
|||
|
|
resources:
|
|||
|
|
limits:
|
|||
|
|
memory: 1G
|
|||
|
|
|
|||
|
|
networks:
|
|||
|
|
- opc-network
|
|||
|
|
|
|||
|
|
networks:
|
|||
|
|
opc-network:
|
|||
|
|
name: opc-network
|
|||
|
|
external: true
|