-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
52 lines (51 loc) · 2.34 KB
/
Copy pathdocker-compose.yml
File metadata and controls
52 lines (51 loc) · 2.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# NetOpsUI — UI (nginx) + manager (skills / agent profiles / config views).
#
# Both containers use the host network so they can reach NetOps Agent and
# Hermes, which listen on 127.0.0.1 only; neither backend is exposed publicly.
#
# cp .env.example .env # then edit
# docker compose up -d --build
#
# Live-editing the frontend: docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d
services:
frontend:
build: ./frontend
image: netopsui-frontend
network_mode: host
environment:
UI_PORT: ${UI_PORT:-3000}
NETOPS_AGENT_URL: ${NETOPS_AGENT_URL:-http://127.0.0.1:8100}
HERMES_URL: ${HERMES_URL:-http://127.0.0.1:8642}
MANAGER_URL: http://127.0.0.1:${MANAGER_PORT:-8200}
depends_on:
manager:
condition: service_healthy
restart: unless-stopped
# Mounts are the minimum the manager needs. Writable: skills/, NetOps Agent's
# SOUL.md, and both config.yaml (Settings > LLM Provider edits only the
# `model:` block, with a backup and a verification step). .env is read-only;
# sessions.db and the rest of each home directory are not mounted at all.
# NOTE: single-file mounts must exist on the host first, or Docker creates a
# directory in their place. ./data is committed (data/.gitkeep) for the same
# reason: if it were missing Docker would create it root-owned and the
# non-root manager could not write its database there.
manager:
build: ./server
image: netopsui-manager
network_mode: host
user: "${HOST_UID:-1000}:${HOST_GID:-1000}"
environment:
MANAGER_PORT: ${MANAGER_PORT:-8200}
HERMES_URL: ${HERMES_URL:-http://127.0.0.1:8642} # only to test the stored key
NETOPS_AGENT_URL: ${NETOPS_AGENT_URL:-http://127.0.0.1:8100} # the manager runs chats against it
volumes:
- ${DATA_DIR:-./data}:/data/netopsui
- ${NETOPS_AGENT_HOME:?set NETOPS_AGENT_HOME in .env}/skills:/data/netops/skills
- ${NETOPS_AGENT_HOME}/SOUL.md:/data/netops/SOUL.md
- ${NETOPS_AGENT_HOME}/config.yaml:/data/netops/config.yaml
- ${NETOPS_AGENT_HOME}/.env:/data/netops/.env:ro
- ${HERMES_HOME:?set HERMES_HOME in .env}/skills:/data/hermes/skills
- ${HERMES_HOME}/SOUL.md:/data/hermes/SOUL.md:ro
- ${HERMES_HOME}/config.yaml:/data/hermes/config.yaml
- ${HERMES_HOME}/.env:/data/hermes/.env:ro
restart: unless-stopped