-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.production.yml
More file actions
153 lines (147 loc) · 7.96 KB
/
Copy pathdocker-compose.production.yml
File metadata and controls
153 lines (147 loc) · 7.96 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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
name: architoken-production
services:
gateway:
build:
context: .
dockerfile: 05-infra/docker/Dockerfile.gateway
image: architoken-gateway:production
environment:
ARCHITOKEN_PROFILE: production
ARCHITOKEN_SERVER__HOST: 0.0.0.0
ARCHITOKEN_SERVER__PORT: 8080
DATABASE_URL: ${DATABASE_URL:?set DATABASE_URL}
ARCHITOKEN_DATABASE__URL: ${ARCHITOKEN_DATABASE__URL:?set ARCHITOKEN_DATABASE__URL}
ARCHITOKEN_CACHE__URL: ${ARCHITOKEN_CACHE__URL:?set ARCHITOKEN_CACHE__URL}
NATS_URL: ${NATS_URL:?set NATS_URL}
TEMPORAL_ADDRESS: ${TEMPORAL_ADDRESS:?set TEMPORAL_ADDRESS}
S3_ENDPOINT: ${S3_ENDPOINT:?set S3_ENDPOINT}
S3_PUBLIC_ENDPOINT: ${S3_PUBLIC_ENDPOINT:?set S3_PUBLIC_ENDPOINT}
S3_ACCESS_KEY: ${S3_ACCESS_KEY:?set S3_ACCESS_KEY}
S3_SECRET_KEY: ${S3_SECRET_KEY:?set S3_SECRET_KEY}
S3_BUCKET: ${S3_BUCKET:?set S3_BUCKET}
ARCHITOKEN_OBSERVABILITY__OTLP_ENDPOINT: ${ARCHITOKEN_OBSERVABILITY__OTLP_ENDPOINT:?set ARCHITOKEN_OBSERVABILITY__OTLP_ENDPOINT}
OTEL_EXPORTER_OTLP_ENDPOINT: ${OTEL_EXPORTER_OTLP_ENDPOINT:?set OTEL_EXPORTER_OTLP_ENDPOINT}
ARCHITOKEN_OBSERVABILITY__SERVICE_NAME: ${ARCHITOKEN_OBSERVABILITY__SERVICE_NAME:-architoken-gateway}
ARCHITOKEN_PHASE8_PGBOUNCER_REQUIRED: "true"
ARCHITOKEN_PHASE8_OBJECT_STORE_REQUIRED: "true"
ARCHITOKEN_PHASE8_OTEL_REQUIRED: "true"
ARCHITOKEN_PHASE8_MAX_REQUEST_BODY_BYTES: ${ARCHITOKEN_PHASE8_MAX_REQUEST_BODY_BYTES:-16777216}
ARCHITOKEN_PHASE8_MAX_UPLOAD_BYTES: ${ARCHITOKEN_PHASE8_MAX_UPLOAD_BYTES:-5368709120}
ARCHITOKEN_PHASE8_API_RPS_LIMIT: ${ARCHITOKEN_PHASE8_API_RPS_LIMIT:-10000}
ARCHITOKEN_PHASE8_TENANT_RPS_LIMIT: ${ARCHITOKEN_PHASE8_TENANT_RPS_LIMIT:-1000}
ARCHITOKEN_PHASE8_ACTOR_RPS_LIMIT: ${ARCHITOKEN_PHASE8_ACTOR_RPS_LIMIT:-100}
ARCHITOKEN_PHASE8_MAX_CONCURRENT_UPLOADS_PER_TENANT: ${ARCHITOKEN_PHASE8_MAX_CONCURRENT_UPLOADS_PER_TENANT:-32}
ARCHITOKEN_PHASE8_MAX_CONCURRENT_CONVERSION_JOBS_PER_TENANT: ${ARCHITOKEN_PHASE8_MAX_CONCURRENT_CONVERSION_JOBS_PER_TENANT:-16}
ARCHITOKEN_PHASE8_DB_POOL_MAX_CONNECTIONS: ${ARCHITOKEN_PHASE8_DB_POOL_MAX_CONNECTIONS:-64}
ARCHITOKEN_AUTH__JWT_SECRET: ${ARCHITOKEN_AUTH__JWT_SECRET:?set ARCHITOKEN_AUTH__JWT_SECRET}
ARCHITOKEN_AUTH__JWT_ISSUER: ${ARCHITOKEN_AUTH__JWT_ISSUER:?set ARCHITOKEN_AUTH__JWT_ISSUER}
ARCHITOKEN_INFERENCE__DEFAULT_ENGINE: ${ARCHITOKEN_INFERENCE__DEFAULT_ENGINE:-v_llm}
ARCHITOKEN_INFERENCE__WHITELISTED_MODELS: ${ARCHITOKEN_INFERENCE__WHITELISTED_MODELS:-architoken-planner,architoken-generator,architoken-evaluator}
ARCHITOKEN_GENERATION__PROVIDER: http_text_to_bim
ARCHITOKEN_GENERATION__TEXT_TO_BIM_URL: ${ARCHITOKEN_GENERATION__TEXT_TO_BIM_URL:?set ARCHITOKEN_GENERATION__TEXT_TO_BIM_URL}
ARCHITOKEN_WORKER_SUBJECT: ${ARCHITOKEN_WORKER_SUBJECT:-architoken.conversion.jobs}
ARCHITOKEN_WORKER_RESULT_TOKEN: ${ARCHITOKEN_WORKER_RESULT_TOKEN:?set ARCHITOKEN_WORKER_RESULT_TOKEN}
ports:
- "${ARCHITOKEN_GATEWAY_PORT:-8080}:8080"
restart: unless-stopped
frontend:
build:
context: ./03-frontend
dockerfile: ../05-infra/docker/Dockerfile.frontend
image: architoken-frontend:production
environment:
NEXT_PUBLIC_API_URL: ${NEXT_PUBLIC_API_URL:?set NEXT_PUBLIC_API_URL}
NEXT_PUBLIC_AGENT_URL: ${NEXT_PUBLIC_AGENT_URL:-}
PAPERCLIP_DASHBOARD_URL: ${PAPERCLIP_DASHBOARD_URL:-http://paperclip:3111}
NEXT_PUBLIC_PAPERCLIP_PUBLIC_URL: ${NEXT_PUBLIC_PAPERCLIP_PUBLIC_URL:?set NEXT_PUBLIC_PAPERCLIP_PUBLIC_URL}
ports:
- "${ARCHITOKEN_FRONTEND_PORT:-3000}:3000"
depends_on:
- gateway
- paperclip
restart: unless-stopped
paperclip:
# Paperclip v2026.517.0 tag commit: 3e6610fb938d04638fa578a1fc0d119b434fa2e4
build:
context: https://github.com/paperclipai/paperclip.git#3e6610fb938d04638fa578a1fc0d119b434fa2e4
dockerfile: Dockerfile
image: architoken-paperclip:v2026.517.0
environment:
NODE_ENV: production
HOST: 0.0.0.0
PORT: 3111
SERVE_UI: "true"
PAPERCLIP_HOME: /paperclip
PAPERCLIP_INSTANCE_ID: ${PAPERCLIP_INSTANCE_ID:-architoken-production-manufacturing}
PAPERCLIP_CONFIG: ${PAPERCLIP_CONFIG:-/paperclip/instances/architoken-production-manufacturing/config.json}
PAPERCLIP_PUBLIC_URL: ${PAPERCLIP_PUBLIC_URL:-}
PAPERCLIP_AUTH_PUBLIC_BASE_URL: ${PAPERCLIP_AUTH_PUBLIC_BASE_URL:-}
PAPERCLIP_ALLOWED_HOSTNAMES: ${PAPERCLIP_ALLOWED_HOSTNAMES:-}
BETTER_AUTH_BASE_URL: ${BETTER_AUTH_BASE_URL:-}
BETTER_AUTH_URL: ${BETTER_AUTH_URL:-}
BETTER_AUTH_TRUSTED_ORIGINS: ${BETTER_AUTH_TRUSTED_ORIGINS:-}
PAPERCLIP_DEPLOYMENT_MODE: ${PAPERCLIP_DEPLOYMENT_MODE:-authenticated}
PAPERCLIP_DEPLOYMENT_EXPOSURE: ${PAPERCLIP_DEPLOYMENT_EXPOSURE:-private}
BETTER_AUTH_SECRET: ${PAPERCLIP_BETTER_AUTH_SECRET:?set PAPERCLIP_BETTER_AUTH_SECRET}
PAPERCLIP_AGENT_JWT_SECRET: ${PAPERCLIP_AGENT_JWT_SECRET:?set PAPERCLIP_AGENT_JWT_SECRET}
volumes:
- paperclip-data:/paperclip
expose:
- "3111"
ports:
- "${PAPERCLIP_PUBLIC_PORT:-3111}:3111"
restart: unless-stopped
stirling-pdf:
image: docker.stirlingpdf.com/stirlingtools/stirling-pdf:${STIRLING_PDF_IMAGE_TAG:?set STIRLING_PDF_IMAGE_TAG}
environment:
DOCKER_ENABLE_SECURITY: ${STIRLING_PDF_ENABLE_SECURITY:-true}
SECURITY_ENABLE_LOGIN: ${STIRLING_PDF_ENABLE_LOGIN:-true}
restart: unless-stopped
engineering-worker:
build:
context: .
dockerfile: 05-infra/docker/Dockerfile.workers
args:
FORGECAD_NPM_VERSION: ${FORGECAD_NPM_VERSION:?set FORGECAD_NPM_VERSION}
image: architoken-engineering-worker:production
environment:
ARCHITOKEN_PROFILE: production
DATABASE_URL: ${DATABASE_URL:?set DATABASE_URL}
ARCHITOKEN_DATABASE__URL: ${ARCHITOKEN_DATABASE__URL:?set ARCHITOKEN_DATABASE__URL}
NATS_URL: ${NATS_URL:?set NATS_URL}
TEMPORAL_ADDRESS: ${TEMPORAL_ADDRESS:?set TEMPORAL_ADDRESS}
S3_ENDPOINT: ${S3_ENDPOINT:?set S3_ENDPOINT}
S3_ACCESS_KEY: ${S3_ACCESS_KEY:?set S3_ACCESS_KEY}
S3_SECRET_KEY: ${S3_SECRET_KEY:?set S3_SECRET_KEY}
S3_BUCKET: ${S3_BUCKET:?set S3_BUCKET}
OTEL_EXPORTER_OTLP_ENDPOINT: ${OTEL_EXPORTER_OTLP_ENDPOINT:?set OTEL_EXPORTER_OTLP_ENDPOINT}
IFCCONVERT_BINARY: ${IFCCONVERT_BINARY:-IfcConvert}
BLENDER_BINARY: ${BLENDER_BINARY:-blender}
STIRLING_PDF_URL: ${STIRLING_PDF_URL:?set STIRLING_PDF_URL}
STIRLING_PDF_TOKEN: ${STIRLING_PDF_TOKEN:-}
MINERU_BINARY: ${MINERU_BINARY:-mineru}
ARCHITOKEN_AI_PROVIDER_ROUTER_URL: ${ARCHITOKEN_AI_PROVIDER_ROUTER_URL:?set ARCHITOKEN_AI_PROVIDER_ROUTER_URL}
BUILDINGSMART_VALIDATE_URL: ${BUILDINGSMART_VALIDATE_URL:?set BUILDINGSMART_VALIDATE_URL}
BUILDINGSMART_VALIDATE_OPERATION_PATH: ${BUILDINGSMART_VALIDATE_OPERATION_PATH:?set BUILDINGSMART_VALIDATE_OPERATION_PATH}
BUILDINGSMART_VALIDATE_TOKEN: ${BUILDINGSMART_VALIDATE_TOKEN:-}
POSTGIS_DSN: ${POSTGIS_DSN:-}
OPEN_DESIGN_URL: ${OPEN_DESIGN_URL:-}
SIYUAN_API_URL: ${SIYUAN_API_URL:-}
SIYUAN_TOKEN: ${SIYUAN_TOKEN:-}
SPECKLE_SERVER_URL: ${SPECKLE_SERVER_URL:?set SPECKLE_SERVER_URL}
SPECKLE_TOKEN: ${SPECKLE_TOKEN:?set SPECKLE_TOKEN}
CESIUM_ION_TOKEN: ${CESIUM_ION_TOKEN:?set CESIUM_ION_TOKEN}
FORGECAD_URL: ${FORGECAD_URL:-}
FORGECAD_TOKEN: ${FORGECAD_TOKEN:-}
DWG_ADAPTER_URL: ${DWG_ADAPTER_URL:?set DWG_ADAPTER_URL}
BSDD_API_URL: ${BSDD_API_URL:-https://api.bsdd.buildingsmart.org}
ARCHITOKEN_WORKER_SUBJECT: ${ARCHITOKEN_WORKER_SUBJECT:-architoken.conversion.jobs}
ARCHITOKEN_WORKER_RESULT_SUBJECT: ${ARCHITOKEN_WORKER_RESULT_SUBJECT:-architoken.conversion.results}
ARCHITOKEN_GATEWAY_URL: ${ARCHITOKEN_GATEWAY_URL:-http://gateway:8080}
ARCHITOKEN_WORKER_RESULT_TOKEN: ${ARCHITOKEN_WORKER_RESULT_TOKEN:?set ARCHITOKEN_WORKER_RESULT_TOKEN}
depends_on:
- gateway
- stirling-pdf
restart: unless-stopped
volumes:
paperclip-data: