feat(infra): Phase 2.3 — add memory limits to Docker services

deploy.resources.limits.memory applied per roadmap table.
Limits derived from 2-day RSS baseline (2026-05-27-29).
Takes effect on next docker compose up — no running containers affected.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Saravana Kumar 2026-05-29 01:30:51 +00:00
parent 263bee6886
commit f91d5d57a1

View File

@ -61,6 +61,10 @@ services:
retries: 12 retries: 12
start_period: 20s start_period: 20s
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 1g
azurite: azurite:
image: mcr.microsoft.com/azure-storage/azurite:3.35.0 image: mcr.microsoft.com/azure-storage/azurite:3.35.0
@ -75,6 +79,10 @@ services:
timeout: 5s timeout: 5s
retries: 6 retries: 6
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 256m
mailpit: mailpit:
image: axllent/mailpit:v1.27.5 image: axllent/mailpit:v1.27.5
@ -87,6 +95,10 @@ services:
timeout: 5s timeout: 5s
retries: 6 retries: 6
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 128m
loki: loki:
image: grafana/loki:3.3.2 image: grafana/loki:3.3.2
@ -102,6 +114,10 @@ services:
timeout: 5s timeout: 5s
retries: 3 retries: 3
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 384m
grafana: grafana:
image: grafana/grafana:11.4.0 image: grafana/grafana:11.4.0
@ -124,6 +140,10 @@ services:
timeout: 5s timeout: 5s
retries: 3 retries: 3
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 384m
prometheus: prometheus:
image: prom/prometheus:v3.5.0 image: prom/prometheus:v3.5.0
@ -147,6 +167,10 @@ services:
timeout: 5s timeout: 5s
retries: 3 retries: 3
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 384m
node-exporter: node-exporter:
image: prom/node-exporter:v1.9.1 image: prom/node-exporter:v1.9.1
@ -163,6 +187,10 @@ services:
timeout: 5s timeout: 5s
retries: 3 retries: 3
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 128m
cadvisor: cadvisor:
image: gcr.io/cadvisor/cadvisor:v0.49.1 image: gcr.io/cadvisor/cadvisor:v0.49.1
@ -184,6 +212,10 @@ services:
timeout: 5s timeout: 5s
retries: 3 retries: 3
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 256m
valkey: valkey:
image: valkey/valkey:8-alpine image: valkey/valkey:8-alpine
@ -204,6 +236,10 @@ services:
timeout: 5s timeout: 5s
retries: 5 retries: 5
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 128m
gateway: gateway:
image: traefik:v3.3 image: traefik:v3.3
@ -225,6 +261,10 @@ services:
loki: loki:
condition: service_started condition: service_started
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 128m
caddy: caddy:
image: caddy:2-alpine image: caddy:2-alpine
@ -244,6 +284,10 @@ services:
mcp-server: mcp-server:
condition: service_healthy condition: service_healthy
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 256m
# ═════════════════════════════════════════════════════════════════ # ═════════════════════════════════════════════════════════════════
# PLATFORM SERVICES (from this repo) # PLATFORM SERVICES (from this repo)
@ -279,6 +323,10 @@ services:
timeout: 10s timeout: 10s
retries: 3 retries: 3
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 512m
extraction-service: extraction-service:
build: build:
@ -304,6 +352,10 @@ services:
timeout: 10s timeout: 10s
retries: 3 retries: 3
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 512m
mcp-server: mcp-server:
build: build:
@ -330,6 +382,10 @@ services:
timeout: 10s timeout: 10s
retries: 3 retries: 3
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 384m
# ═════════════════════════════════════════════════════════════════ # ═════════════════════════════════════════════════════════════════
# PLATFORM DASHBOARDS (from this repo) # PLATFORM DASHBOARDS (from this repo)
@ -359,6 +415,10 @@ services:
timeout: 10s timeout: 10s
retries: 3 retries: 3
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 512m
tracker-web: tracker-web:
build: build:
@ -381,6 +441,10 @@ services:
timeout: 10s timeout: 10s
retries: 3 retries: 3
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 512m
# ═════════════════════════════════════════════════════════════════ # ═════════════════════════════════════════════════════════════════
# PRODUCT BACKENDS (from sibling repos) # PRODUCT BACKENDS (from sibling repos)
@ -406,6 +470,10 @@ services:
timeout: 10s timeout: 10s
retries: 3 retries: 3
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 512m
chronomind-backend: chronomind-backend:
build: build:
@ -427,6 +495,10 @@ services:
timeout: 10s timeout: 10s
retries: 3 retries: 3
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 512m
jarvisjr-backend: jarvisjr-backend:
build: build:
@ -448,6 +520,10 @@ services:
timeout: 10s timeout: 10s
retries: 3 retries: 3
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 512m
nomgap-backend: nomgap-backend:
build: build:
@ -469,6 +545,10 @@ services:
timeout: 10s timeout: 10s
retries: 3 retries: 3
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 512m
mindlyst-backend: mindlyst-backend:
build: build:
@ -490,6 +570,10 @@ services:
timeout: 10s timeout: 10s
retries: 3 retries: 3
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 512m
lysnrai-backend: lysnrai-backend:
build: build:
@ -511,6 +595,10 @@ services:
timeout: 10s timeout: 10s
retries: 3 retries: 3
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 512m
notelett-backend: notelett-backend:
build: build:
@ -533,6 +621,10 @@ services:
timeout: 10s timeout: 10s
retries: 3 retries: 3
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 512m
flowmonk-backend: flowmonk-backend:
build: build:
@ -554,6 +646,10 @@ services:
timeout: 10s timeout: 10s
retries: 3 retries: 3
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 512m
actiontrail-backend: actiontrail-backend:
build: build:
@ -575,6 +671,10 @@ services:
timeout: 10s timeout: 10s
retries: 3 retries: 3
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 512m
localmemgpt-backend: localmemgpt-backend:
build: build:
@ -601,6 +701,10 @@ services:
timeout: 10s timeout: 10s
retries: 3 retries: 3
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 512m
efforise-backend: efforise-backend:
build: build:
@ -624,6 +728,10 @@ services:
timeout: 10s timeout: 10s
retries: 3 retries: 3
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 512m
# ═════════════════════════════════════════════════════════════════ # ═════════════════════════════════════════════════════════════════
# PRODUCT WEB APPS (from sibling repos) # PRODUCT WEB APPS (from sibling repos)
@ -656,6 +764,10 @@ services:
timeout: 10s timeout: 10s
retries: 3 retries: 3
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 512m
chronomind-web: chronomind-web:
build: build:
@ -682,6 +794,10 @@ services:
timeout: 10s timeout: 10s
retries: 3 retries: 3
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 512m
jarvisjr-web: jarvisjr-web:
build: build:
@ -707,6 +823,10 @@ services:
timeout: 10s timeout: 10s
retries: 3 retries: 3
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 512m
flowmonk-web: flowmonk-web:
build: build:
@ -734,6 +854,10 @@ services:
timeout: 10s timeout: 10s
retries: 3 retries: 3
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 512m
notelett-web: notelett-web:
build: build:
@ -760,6 +884,10 @@ services:
timeout: 10s timeout: 10s
retries: 3 retries: 3
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 512m
mindlyst-web: mindlyst-web:
build: build:
@ -785,6 +913,10 @@ services:
timeout: 10s timeout: 10s
retries: 3 retries: 3
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 512m
# TODO(nomgap): Decide whether local Docker smoke tests still need a web # TODO(nomgap): Decide whether local Docker smoke tests still need a web
# service once the Vercel deployment path is fully documented. # service once the Vercel deployment path is fully documented.
@ -816,6 +948,10 @@ services:
timeout: 10s timeout: 10s
retries: 3 retries: 3
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 512m
localmemgpt-web: localmemgpt-web:
build: build:
@ -843,6 +979,10 @@ services:
timeout: 10s timeout: 10s
retries: 3 retries: 3
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 512m
efforise-web: efforise-web:
build: build:
@ -860,6 +1000,10 @@ services:
timeout: 10s timeout: 10s
retries: 3 retries: 3
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 512m
# ── Local LLM Lab (no backend — dashboard talks directly to Ollama) ── # ── Local LLM Lab (no backend — dashboard talks directly to Ollama) ──
@ -887,6 +1031,10 @@ services:
timeout: 5s timeout: 5s
retries: 3 retries: 3
restart: unless-stopped restart: unless-stopped
deploy:
resources:
limits:
memory: 512m
# ═════════════════════════════════════════════════════════════════ # ═════════════════════════════════════════════════════════════════
# VOLUMES # VOLUMES