@@ -7,17 +7,33 @@ if os.path.exists(".env"):
77 dotenv (fn = ".env" )
88
99config .define_bool ("debug" )
10+ config .define_bool ("dev" )
1011cfg = config .parse ()
1112backend_debug = cfg .get ("debug" , False )
13+ dev_mode = cfg .get ("dev" , False )
14+
15+ # Print mode information
16+ if dev_mode :
17+ print ("🚀 Running in DEVELOPMENT mode (using Dockerfile.dev)" )
18+ print (" - Live code updates enabled" )
19+ print (" - Fast iteration optimized builds" )
20+ else :
21+ print ("🏭 Running in PRODUCTION mode (using Dockerfile)" )
22+ print (" - Production-optimized builds" )
23+ print (" - No live updates" )
1224
1325core_library_context = "./libs"
1426
1527
1628def create_linter_command (folder_name , name ):
17- # Build with Dockerfile.dev for services, Dockerfile for libs
18- dockerfile = folder_name + ("/Dockerfile" if folder_name == "./libs" else "/Dockerfile.dev" )
19- # Only libs use TEST build arg; services use no build args
20- build_args = " --build-arg TEST=1" if folder_name == "./libs" else ""
29+ # Build with appropriate Dockerfile based on context
30+ if folder_name == "./libs" :
31+ dockerfile = folder_name + "/Dockerfile"
32+ build_args = " --build-arg TEST=0"
33+ else :
34+ # For services, always use .dev for testing/linting (dev tools needed)
35+ dockerfile = folder_name + "/Dockerfile.dev"
36+ build_args = ""
2137 return (
2238 "docker build -t "
2339 + name
@@ -31,9 +47,14 @@ def create_linter_command(folder_name, name):
3147
3248
3349def create_test_command (folder_name , name ):
34- # Build with Dockerfile.dev for services, Dockerfile for libs
35- dockerfile = folder_name + ("/Dockerfile" if folder_name == "./libs" else "/Dockerfile.dev" )
36- build_args = " --build-arg TEST=1" if folder_name == "./libs" else ""
50+ # Build with appropriate Dockerfile based on context
51+ if folder_name == "./libs" :
52+ dockerfile = folder_name + "/Dockerfile"
53+ build_args = " --build-arg TEST=1"
54+ else :
55+ # For services, always use .dev for testing/linting (dev tools needed)
56+ dockerfile = folder_name + "/Dockerfile.dev"
57+ build_args = ""
3758 return (
3859 "docker build -t "
3960 + name
@@ -152,16 +173,15 @@ rag_api_image_name = "rag-backend"
152173
153174backend_context = "./services/rag-backend"
154175rag_api_full_image_name = "%s/%s" % (registry , rag_api_image_name )
155- docker_build (
156- rag_api_full_image_name ,
157- "." ,
158- live_update = [
159- sync (backend_context , "/app/services/rag-backend" ),
160- sync (core_library_context + "/rag-core-api" , "/app/libs/rag-core-api" ),
161- sync (core_library_context + "/rag-core-lib" , "/app/libs/rag-core-lib" ),
162- ],
163- dockerfile = backend_context + "/Dockerfile.dev" ,
164- ignore = [
176+
177+ # Choose dockerfile based on dev mode
178+ backend_dockerfile = backend_context + ("/Dockerfile.dev" if dev_mode else "/Dockerfile" )
179+
180+ docker_build_config = {
181+ "ref" : rag_api_full_image_name ,
182+ "context" : "." ,
183+ "dockerfile" : backend_dockerfile ,
184+ "ignore" : [
165185 "infrastructure/" ,
166186 "libs/admin-api-lib/" ,
167187 "libs/extractor-api-lib/" ,
@@ -170,7 +190,22 @@ docker_build(
170190 "services/mcp-server/" ,
171191 "services/frontend/" ,
172192 ],
173- )
193+ }
194+
195+ # Add build args and live_update based on dev mode
196+ if dev_mode :
197+ docker_build_config ["live_update" ] = [
198+ sync (backend_context , "/app/services/rag-backend" ),
199+ sync (core_library_context + "/rag-core-api" , "/app/libs/rag-core-api" ),
200+ sync (core_library_context + "/rag-core-lib" , "/app/libs/rag-core-lib" ),
201+ ]
202+ else :
203+ # Use prod-local for Tilt with production Dockerfile
204+ docker_build_config ["build_args" ] = {
205+ "DEPENDENCY_GROUP" : "prod-local"
206+ }
207+
208+ docker_build (** docker_build_config )
174209
175210# Add linter trigger
176211local_resource (
@@ -199,22 +234,31 @@ mcp_image_name = "mcp-server"
199234
200235mcp_context = "./services/mcp-server"
201236mcp_full_image_name = "%s/%s" % (registry , mcp_image_name )
202- docker_build (
203- mcp_full_image_name ,
204- "." ,
205- live_update = [
206- sync (mcp_context , "/app/services/mcp-server" ),
207- ],
208- dockerfile = mcp_context + "/Dockerfile.dev" ,
209- ignore = [
237+
238+ # Choose dockerfile based on dev mode
239+ mcp_dockerfile = mcp_context + ("/Dockerfile.dev" if dev_mode else "/Dockerfile" )
240+
241+ mcp_docker_build_config = {
242+ "ref" : mcp_full_image_name ,
243+ "context" : "." ,
244+ "dockerfile" : mcp_dockerfile ,
245+ "ignore" : [
210246 "infrastructure/" ,
211247 "libs/" ,
212248 "services/admin-backend/" ,
213249 "services/document-extractor/" ,
214250 "services/rag-backend/" ,
215251 "services/frontend/" ,
216252 ],
217- )
253+ }
254+
255+ # Add live_update only in dev mode
256+ if dev_mode :
257+ mcp_docker_build_config ["live_update" ] = [
258+ sync (mcp_context , "/app/services/mcp-server" ),
259+ ]
260+
261+ docker_build (** mcp_docker_build_config )
218262
219263# Add linter trigger
220264local_resource (
@@ -236,16 +280,15 @@ admin_api_image_name = "admin-backend"
236280
237281admin_backend_context = "./services/admin-backend"
238282admin_api_full_image_name = "%s/%s" % (registry , admin_api_image_name )
239- docker_build (
240- admin_api_full_image_name ,
241- "." ,
242- live_update = [
243- sync (admin_backend_context , "/app/services/admin-backend" ),
244- sync (core_library_context + "/rag-core-lib" , "/app/libs/rag-core-lib" ),
245- sync (core_library_context + "/admin-api-lib" , "/app/libs/admin-api-lib" ),
246- ],
247- dockerfile = admin_backend_context + "/Dockerfile.dev" ,
248- ignore = [
283+
284+ # Choose dockerfile based on dev mode
285+ admin_dockerfile = admin_backend_context + ("/Dockerfile.dev" if dev_mode else "/Dockerfile" )
286+
287+ admin_docker_build_config = {
288+ "ref" : admin_api_full_image_name ,
289+ "context" : "." ,
290+ "dockerfile" : admin_dockerfile ,
291+ "ignore" : [
249292 "infrastructure/" ,
250293 "libs/rag-core-api/" ,
251294 "libs/extractor-api-lib/" ,
@@ -254,7 +297,22 @@ docker_build(
254297 "services/mcp-server/" ,
255298 "services/frontend/" ,
256299 ],
257- )
300+ }
301+
302+ # Add build args and live_update based on dev mode
303+ if dev_mode :
304+ admin_docker_build_config ["live_update" ] = [
305+ sync (admin_backend_context , "/app/services/admin-backend" ),
306+ sync (core_library_context + "/rag-core-lib" , "/app/libs/rag-core-lib" ),
307+ sync (core_library_context + "/admin-api-lib" , "/app/libs/admin-api-lib" ),
308+ ]
309+ else :
310+ # Use prod-local for Tilt with production Dockerfile
311+ admin_docker_build_config ["build_args" ] = {
312+ "DEPENDENCY_GROUP" : "prod-local"
313+ }
314+
315+ docker_build (** admin_docker_build_config )
258316
259317# Add linter trigger
260318local_resource (
@@ -286,15 +344,15 @@ document_extractor_image_name = "document-extractor"
286344
287345extractor_context = "./services/document-extractor"
288346document_extractor_full_image_name = "%s/%s" % (registry , document_extractor_image_name )
289- docker_build (
290- document_extractor_full_image_name ,
291- "." ,
292- live_update = [
293- sync ( extractor_context , "/app/services/document-extractor" ),
294- sync ( core_library_context + "/extractor-api-lib" , "/app/libs/extractor-api-lib" ) ,
295- ] ,
296- dockerfile = extractor_context + "/Dockerfile.dev" ,
297- ignore = [
347+
348+ # Choose dockerfile based on dev mode
349+ extractor_dockerfile = extractor_context + ( "/Dockerfile.dev" if dev_mode else "/Dockerfile" )
350+
351+ extractor_docker_build_config = {
352+ "ref" : document_extractor_full_image_name ,
353+ "context" : "." ,
354+ " dockerfile" : extractor_dockerfile ,
355+ " ignore" : [
298356 "infrastructure/" ,
299357 "libs/rag-core-api/" ,
300358 "libs/rag-core-lib/" ,
@@ -305,7 +363,21 @@ docker_build(
305363 "services/frontend/" ,
306364 "scripts/" ,
307365 ],
308- )
366+ }
367+
368+ # Add build args and live_update based on dev mode
369+ if dev_mode :
370+ extractor_docker_build_config ["live_update" ] = [
371+ sync (extractor_context , "/app/services/document-extractor" ),
372+ sync (core_library_context + "/extractor-api-lib" , "/app/libs/extractor-api-lib" ),
373+ ]
374+ else :
375+ # Use prod-local for Tilt with production Dockerfile
376+ extractor_docker_build_config ["build_args" ] = {
377+ "DEPENDENCY_GROUP" : "prod-local"
378+ }
379+
380+ docker_build (** extractor_docker_build_config )
309381
310382# Add linter trigger
311383local_resource (
0 commit comments