11# Run the Railway-equivalent Docker image for every showcase package locally.
2- # Prereq: run scripts/dev-local.sh which dereferences tools/ and shared-tools/ symlinks into each package build context first.
32# Ports come from shared/local-ports.json; internal port is always 10000 (Railway convention).
43
54x-integration-defaults : &integration-defaults
65 env_file : .env
76 environment :
87 - OPENAI_API_KEY=${OPENAI_API_KEY:-sk-mock}
98 - OPENAI_BASE_URL=http://aimock:4010/v1
9+ - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-sk-mock-anthropic}
10+ - ANTHROPIC_BASE_URL=http://aimock:4010
11+ - GOOGLE_API_KEY=${GOOGLE_API_KEY:-fake-gemini-key}
12+ - GOOGLE_GEMINI_BASE_URL=http://aimock:4010
13+ - SPRING_AI_OPENAI_BASE_URL=http://aimock:4010
1014 - AIMOCK_URL=http://aimock:4010
15+ - GitHubToken=${GitHubToken:-gh-mock-local-dev}
1116 depends_on :
1217 aimock :
1318 condition : service_healthy
1419 restart : unless-stopped
1520 healthcheck :
16- test : ["CMD", "curl", "-f", "http://localhost:10000/health"]
21+ test : ["CMD", "curl", "-f", "http://localhost:10000/api/ health"]
1722 interval : 5s
1823 timeout : 3s
1924 retries : 5
@@ -75,7 +80,8 @@ services:
7580 profiles : ["infra", "all"]
7681 restart : unless-stopped
7782 healthcheck :
78- test : ["CMD", "curl", "-f", "http://localhost:8090/api/health"]
83+ test :
84+ ["CMD", "wget", "-q", "--spider", "http://localhost:8090/api/health"]
7985 interval : 5s
8086 timeout : 3s
8187 retries : 5
@@ -96,7 +102,13 @@ services:
96102 profiles : ["infra", "all"]
97103 restart : unless-stopped
98104 healthcheck :
99- test : ["CMD", "curl", "-f", "http://localhost:10000/"]
105+ test :
106+ [
107+ " CMD" ,
108+ " node" ,
109+ " -e" ,
110+ " fetch('http://localhost:10000/').then(r=>{if(!r.ok)process.exit(1)}).catch(()=>process.exit(1))" ,
111+ ]
100112 interval : 5s
101113 timeout : 3s
102114 retries : 5
@@ -110,6 +122,8 @@ services:
110122 ports :
111123 - " 3100:10000"
112124 profiles : ["langgraph-python", "all"]
125+ volumes :
126+ - ./integrations/langgraph-python/src:/app/src
113127
114128 langgraph-typescript :
115129 << : *integration-defaults
@@ -119,6 +133,8 @@ services:
119133 ports :
120134 - " 3101:10000"
121135 profiles : ["langgraph-typescript", "all"]
136+ volumes :
137+ - ./integrations/langgraph-typescript/src:/app/src
122138
123139 langgraph-fastapi :
124140 << : *integration-defaults
@@ -128,6 +144,8 @@ services:
128144 ports :
129145 - " 3102:10000"
130146 profiles : ["langgraph-fastapi", "all"]
147+ volumes :
148+ - ./integrations/langgraph-fastapi/src:/app/src
131149
132150 google-adk :
133151 << : *integration-defaults
@@ -137,6 +155,8 @@ services:
137155 ports :
138156 - " 3103:10000"
139157 profiles : ["google-adk", "all"]
158+ volumes :
159+ - ./integrations/google-adk/src:/app/src
140160
141161 mastra :
142162 << : *integration-defaults
@@ -146,6 +166,8 @@ services:
146166 ports :
147167 - " 3104:10000"
148168 profiles : ["mastra", "all"]
169+ volumes :
170+ - ./integrations/mastra/src:/app/src
149171
150172 crewai-crews :
151173 << : *integration-defaults
@@ -155,6 +177,8 @@ services:
155177 ports :
156178 - " 3105:10000"
157179 profiles : ["crewai-crews", "all"]
180+ volumes :
181+ - ./integrations/crewai-crews/src:/app/src
158182
159183 pydantic-ai :
160184 << : *integration-defaults
@@ -164,6 +188,8 @@ services:
164188 ports :
165189 - " 3106:10000"
166190 profiles : ["pydantic-ai", "all"]
191+ volumes :
192+ - ./integrations/pydantic-ai/src:/app/src
167193
168194 claude-sdk-python :
169195 << : *integration-defaults
@@ -173,6 +199,8 @@ services:
173199 ports :
174200 - " 3107:10000"
175201 profiles : ["claude-sdk-python", "all"]
202+ volumes :
203+ - ./integrations/claude-sdk-python/src:/app/src
176204
177205 claude-sdk-typescript :
178206 << : *integration-defaults
@@ -182,6 +210,8 @@ services:
182210 ports :
183211 - " 3108:10000"
184212 profiles : ["claude-sdk-typescript", "all"]
213+ volumes :
214+ - ./integrations/claude-sdk-typescript/src:/app/src
185215
186216 agno :
187217 << : *integration-defaults
@@ -191,6 +221,8 @@ services:
191221 ports :
192222 - " 3109:10000"
193223 profiles : ["agno", "all"]
224+ volumes :
225+ - ./integrations/agno/src:/app/src
194226
195227 ag2 :
196228 << : *integration-defaults
@@ -200,6 +232,8 @@ services:
200232 ports :
201233 - " 3110:10000"
202234 profiles : ["ag2", "all"]
235+ volumes :
236+ - ./integrations/ag2/src:/app/src
203237
204238 llamaindex :
205239 << : *integration-defaults
@@ -209,6 +243,8 @@ services:
209243 ports :
210244 - " 3111:10000"
211245 profiles : ["llamaindex", "all"]
246+ volumes :
247+ - ./integrations/llamaindex/src:/app/src
212248
213249 strands :
214250 << : *integration-defaults
@@ -218,6 +254,8 @@ services:
218254 ports :
219255 - " 3112:10000"
220256 profiles : ["strands", "all"]
257+ volumes :
258+ - ./integrations/strands/src:/app/src
221259
222260 langroid :
223261 << : *integration-defaults
@@ -227,6 +265,8 @@ services:
227265 ports :
228266 - " 3113:10000"
229267 profiles : ["langroid", "all"]
268+ volumes :
269+ - ./integrations/langroid/src:/app/src
230270
231271 ms-agent-python :
232272 << : *integration-defaults
@@ -236,6 +276,8 @@ services:
236276 ports :
237277 - " 3114:10000"
238278 profiles : ["ms-agent-python", "all"]
279+ volumes :
280+ - ./integrations/ms-agent-python/src:/app/src
239281
240282 ms-agent-dotnet :
241283 << : *integration-defaults
@@ -245,6 +287,8 @@ services:
245287 ports :
246288 - " 3115:10000"
247289 profiles : ["ms-agent-dotnet", "all"]
290+ volumes :
291+ - ./integrations/ms-agent-dotnet/src:/app/src
248292
249293 spring-ai :
250294 << : *integration-defaults
@@ -254,6 +298,8 @@ services:
254298 ports :
255299 - " 3116:10000"
256300 profiles : ["spring-ai", "all"]
301+ volumes :
302+ - ./integrations/spring-ai/src:/app/src
257303
258304volumes :
259305 showcase-pb-data :
0 commit comments