Repository navigation
Expand file tree
/
Copy pathcompose.split.yaml
More file actions
106 lines (106 loc) · 3.36 KB
/
Copy pathcompose.split.yaml
File metadata and controls
106 lines (106 loc) · 3.36 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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# Copyright 2026 Firefly Software Foundation. SPDX-License-Identifier: Apache-2.0
# Split topology: worker replicas share one execution leader and the same private volume.
services:
api:
build: .
command: ["/app/.venv/bin/forge", "serve", "--role", "api", "--host", "0.0.0.0"]
ports:
- "127.0.0.1:8787:8787"
environment: &forge-environment
FORGE_AUTH_MODE: ${FORGE_AUTH_MODE:-oidc}
FORGE_API_TOKEN: ${FORGE_API_TOKEN:-}
FORGE_OIDC_ISSUER: ${FORGE_OIDC_ISSUER:-}
FORGE_OIDC_CLIENT_ID: ${FORGE_OIDC_CLIENT_ID:-}
FORGE_OIDC_CLIENT_SECRET: ${FORGE_OIDC_CLIENT_SECRET:-}
FORGE_OIDC_API_AUDIENCE: ${FORGE_OIDC_API_AUDIENCE:-}
FORGE_OIDC_REDIRECT_URI: ${FORGE_OIDC_REDIRECT_URI:-}
FORGE_IDENTITY_ENCRYPTION_KEY: ${FORGE_IDENTITY_ENCRYPTION_KEY:-}
FORGE_BROWSER_ORIGIN: ${FORGE_BROWSER_ORIGIN:-}
FORGE_ALLOWED_HOSTS: ${FORGE_ALLOWED_HOSTS:-localhost,127.0.0.1}
FORGE_KEYCLOAK_ADMIN_CLIENT_ID: ${FORGE_KEYCLOAK_ADMIN_CLIENT_ID:-}
FORGE_KEYCLOAK_ADMIN_CLIENT_SECRET: ${FORGE_KEYCLOAK_ADMIN_CLIENT_SECRET:-}
FORGE_DATA_DIR: /data
FORGE_CONCURRENCY: ${FORGE_CONCURRENCY:-2}
FORGE_DATABASE_URL: ${FORGE_DATABASE_URL:?Set the PostgreSQL connection URL}
FORGE_DATABASE_SCHEMA: ${FORGE_DATABASE_SCHEMA:-forge}
FORGE_BRIDGE_URL: ${FORGE_BRIDGE_URL:-}
FORGE_BRIDGE_TOKEN: ${FORGE_BRIDGE_TOKEN:-}
FORGE_AGENTIC_MODEL: ${FORGE_AGENTIC_MODEL:-openai-responses:gpt-6-luna}
FORGE_AGENTIC_API_KEY: ${FORGE_AGENTIC_API_KEY:-}
OPENAI_API_KEY: ${OPENAI_API_KEY:-}
volumes: &forge-storage
- factory-data:/data
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
knowledge-initialize:
condition: service_completed_successfully
worker:
build: .
command: ["/app/.venv/bin/forge", "worker"]
environment: *forge-environment
volumes: *forge-storage
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
knowledge-initialize:
condition: service_completed_successfully
postgres:
image: postgres:17
environment:
POSTGRES_USER: forge
POSTGRES_PASSWORD: ${FORGE_POSTGRES_PASSWORD:?Set a strong database password}
POSTGRES_DB: forge
volumes:
- factory-postgres:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U forge -d forge"]
interval: 5s
timeout: 5s
retries: 10
restart: unless-stopped
knowledge-bootstrap:
extends:
file: compose.yaml
service: knowledge-bootstrap
knowledge-postgres:
extends:
file: compose.yaml
service: knowledge-postgres
embeddings:
extends:
file: compose.yaml
service: embeddings
embeddings-initialize:
extends:
file: compose.yaml
service: embeddings-initialize
knowledge-migrate:
extends:
file: compose.yaml
service: knowledge-migrate
knowledge:
extends:
file: compose.yaml
service: knowledge
knowledge-worker:
extends:
file: compose.yaml
service: knowledge-worker
knowledge-initialize:
extends:
file: compose.yaml
service: knowledge-initialize
networks:
knowledge:
internal: true
model-download:
volumes:
knowledge-secrets:
knowledge-postgres:
knowledge-models:
knowledge-objects:
factory-data:
factory-postgres: