Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 17 additions & 7 deletions .claude/CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ PMOVES.AI is a **production-ready multi-agent orchestration platform** featuring
- Request: `{"query": "...", "top_k": 10, "rerank": true}`
- **Use for:** Knowledge retrieval, semantic search, RAG queries

**Hi-RAG Gateway v1** [Port 8089 CPU, 8090 GPU] **[LEGACY]**
**Hi-RAG Gateway v1** [Port 8089 CPU, 8110 GPU] **[LEGACY]**
- Original hybrid RAG implementation
- Use v2 instead for new features

Expand Down Expand Up @@ -339,21 +339,30 @@ docker compose --profile agents --profile workers up -d

## Git & CI Patterns

**Submodules:**
- `PMOVES-Agent-Zero`, `PMOVES-Archon`, `PMOVES.YT`
- `PMOVES-Jellyfin`, `PMOVES-Open-Notebook`, `PMOVES-Deep-Serch`
- `PMOVES-BoTZ`, `PMOVES-DoX`, `PMOVES-HiRAG`
- Plus health/wealth integrations and more (20 total)
**Submodules (25 total):**
- Core: `PMOVES-Agent-Zero`, `PMOVES-Archon`, `PMOVES-BoTZ`, `PMOVES.YT`
- RAG/Research: `PMOVES-HiRAG`, `PMOVES-Deep-Serch`, `PMOVES-Open-Notebook`
- Media: `PMOVES-Jellyfin`, `PMOVES-Ultimate-TTS-Studio`, `PMOVES-Pipecat`
- Integration: `PMOVES-tensorzero`, `PMOVES-n8n`, `PMOVES-ToKenism-Multi`
- Plus health/wealth integrations and more
- **See:** `.claude/context/submodules.md` for complete catalog

**Security Posture (as of 2025-12-23):**
- CODEOWNERS: 24/24 (100%) - All submodules have code owners
- Dependabot: 24/24 (100%) - All submodules have automated security updates
- **See:** `.claude/learnings/submodule-security-audit-2025-12.md`

**CI/CD:**
- GitHub Actions for multi-arch builds (amd64, arm64)
- Self-hosted runners: ai-lab (GPU), vps (CPU), cloudstartup (staging), kvm4 (production)
- Published to GHCR + Docker Hub
- Smoke tests via `make verify-all`
- **See:** `.claude/context/ci-runners.md` for runner deployment

**Branch Strategy:**
- Main branch: `main`
- Feature branches: `feature/*`
- Hardened branches: `PMOVES.AI-Edition-Hardened` (in submodules)
- PR target: `main`

## Testing Workflow
Expand Down Expand Up @@ -410,7 +419,8 @@ Based on CodeRabbit learnings (see `.claude/learnings/ui-error-handling-review-2

See `.claude/context/` for detailed documentation:
- `services-catalog.md` - Complete service listing with all details
- `submodules.md` - Complete submodules catalog (20 submodules)
- `submodules.md` - Complete submodules catalog (25 submodules)
- `ci-runners.md` - Self-hosted runner deployment and configuration
- `nats-subjects.md` - Comprehensive NATS subject catalog
- `geometry-nats-subjects.md` - GEOMETRY BUS NATS subjects (`tokenism.*`, `geometry.*`)
- `mcp-api.md` - Agent Zero MCP API reference
Expand Down
145 changes: 126 additions & 19 deletions pmoves/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,30 @@
# =============================================================================
# PMOVES Tier-Based Environment File Anchors
# Each tier receives ONLY the secrets it needs (principle of least privilege)
# =============================================================================
x-env-tier-data: &env-tier-data
env_file: [ env.tier-data?, .env.local ] # ? = optional, won't fail if missing

x-env-tier-api: &env-tier-api
env_file: [ env.tier-api?, .env.local ] # ? = optional, won't fail if missing

x-env-tier-worker: &env-tier-worker
env_file: [ env.tier-worker?, .env.local ] # ? = optional, won't fail if missing

x-env-tier-agent: &env-tier-agent
env_file: [ env.tier-agent?, .env.local ] # ? = optional, won't fail if missing

x-env-tier-media: &env-tier-media
env_file: [ env.tier-media?, .env.local ] # ? = optional, won't fail if missing

x-env-tier-llm: &env-tier-llm
env_file: [ env.tier-llm?, .env.local ] # ? = optional, won't fail if missing

# Legacy: Full env for services not yet migrated to tier-based
x-env-legacy: &env-legacy
env_file: [ env.shared.generated, env.shared, .env.generated, .env.local ]

Comment thread
coderabbitai[bot] marked this conversation as resolved.
# =============================================================================
services:
postgres:
image: ankane/pgvector
Expand Down Expand Up @@ -63,7 +90,7 @@ services:
profiles: [ "supabase-cli-rest" ]
networks: [ api_tier, monitoring_tier ]
qdrant:
image: qdrant/qdrant:v1.10.0
image: qdrant/qdrant:v1.16.2
restart: unless-stopped
ports: [ "6333:6333" ]
profiles: [ "data", "qdrant-local" ]
Expand Down Expand Up @@ -218,7 +245,7 @@ services:
extract-worker:
build: ./services/extract-worker
restart: unless-stopped
env_file: [ env.shared.generated, env.shared, .env.generated, .env.local ]
<<: *env-tier-worker
Comment thread
coderabbitai[bot] marked this conversation as resolved.
environment:
- QDRANT_URL=${QDRANT_URL:-http://qdrant:6333}
- QDRANT_COLLECTION=${QDRANT_COLLECTION:-pmoves_chunks_qwen3}
Expand Down Expand Up @@ -338,7 +365,7 @@ services:
environment:
- NATS_URL=${NATS_URL:-nats://nats:4222}
# Use internal Docker network hostname for Supabase Kong (on supabase_net/pmoves-net)
- SUPABASE_URL=${SUPABASE_URL:-http://supabase_kong_pmoves.ai:8000}
- SUPABASE_URL=${SUPABASE_URL:-http://supabase_kong_PMOVES.AI:8000}
Comment thread
coderabbitai[bot] marked this conversation as resolved.
- SUPABASE_SERVICE_ROLE_KEY=${SUPABASE_SERVICE_ROLE_KEY}
- HEALTH_PORT=8102
- AGENT_RESPONSE_SUBJECT=agent.response.v1
Expand Down Expand Up @@ -399,7 +426,7 @@ services:
environment:
- NATS_URL=${NATS_URL:-nats://nats:4222}
# Use internal Docker network hostname for Supabase Kong (on supabase_net/pmoves-net)
- SUPABASE_URL=${SUPABASE_URL:-http://supabase_kong_pmoves.ai:8000}
- SUPABASE_URL=${SUPABASE_URL:-http://supabase_kong_PMOVES.AI:8000}
- SUPABASE_SERVICE_ROLE_KEY=${SUPABASE_SERVICE_ROLE_KEY}
# VibeVoice is typically run outside Docker (Pinokio/host); reach it via host-gateway.
- VIBEVOICE_URL=${VIBEVOICE_URL:-http://host.docker.internal:3000}
Expand Down Expand Up @@ -548,7 +575,7 @@ services:
args:
- YTDLP_VERSION=${YTDLP_VERSION:-}
restart: unless-stopped
env_file: [ env.shared.generated, env.shared, .env.generated, .env.local ]
<<: *env-tier-media
environment:
- MINIO_ENDPOINT=${MINIO_ENDPOINT:-minio:9000}
- MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY}
Expand Down Expand Up @@ -611,7 +638,7 @@ services:
context: .
dockerfile: services/hi-rag-gateway-v2/Dockerfile
restart: unless-stopped
env_file: [ env.shared.generated, env.shared, .env.generated, .env.local ]
<<: *env-tier-api
environment:
- QDRANT_URL=${QDRANT_URL:-http://qdrant:6333}
- QDRANT_COLLECTION=${QDRANT_COLLECTION:-pmoves_chunks_qwen3}
Expand Down Expand Up @@ -641,7 +668,7 @@ services:
- TAILSCALE_ONLY=${TAILSCALE_ONLY:-false}
- TAILSCALE_CIDRS=${TAILSCALE_CIDRS:-100.64.0.0/10}
- SUPA_REST_URL=${SUPA_REST_URL:-http://host.docker.internal:65421/rest/v1}
- SUPABASE_REALTIME_URL=${SUPABASE_REALTIME_URL:-ws://supabase_kong_pmoves.ai:8000/realtime/v1}
- SUPABASE_REALTIME_URL=${SUPABASE_REALTIME_URL:-ws://supabase_kong_PMOVES.AI:8000/realtime/v1}
# In single-env mode, credentials come from env_file; avoid overriding with empty host vars.
extra_hosts:
- "host.docker.internal:host-gateway"
Expand Down Expand Up @@ -691,7 +718,7 @@ services:
devices:
- capabilities: [ gpu ]
count: ${GPU_COUNT:-all}
ports: [ "8090:8086" ]
ports: [ "8110:8086" ]
profiles: [ "gpu", "legacy" ]
depends_on:
qdrant:
Expand Down Expand Up @@ -746,7 +773,7 @@ services:
- PGPASSWORD=${POSTGRES_PASSWORD:-pmoves}
- PGDATABASE=${POSTGRES_DB:-pmoves}
- SUPA_REST_URL=${SUPA_REST_URL:-http://host.docker.internal:65421/rest/v1}
- SUPABASE_REALTIME_URL=${SUPABASE_REALTIME_URL:-ws://supabase_kong_pmoves.ai:8000/realtime/v1}
- SUPABASE_REALTIME_URL=${SUPABASE_REALTIME_URL:-ws://supabase_kong_PMOVES.AI:8000/realtime/v1}
# In single-env mode, credentials come from env_file; avoid overriding with empty host vars.
- OLLAMA_URL=${OLLAMA_URL:-http://pmoves-ollama:11434}
- OLLAMA_EMBED_MODEL=${OLLAMA_EMBED_MODEL:-qwen3-embedding:4b}
Expand Down Expand Up @@ -774,6 +801,39 @@ services:
extra_hosts:
- "host.docker.internal:host-gateway"

# GPU Orchestrator: VRAM management, model lifecycle, priority queue
gpu-orchestrator:
build:
context: ./services/gpu-orchestrator
dockerfile: Dockerfile
restart: unless-stopped
<<: *env-tier-api
environment:
- PORT=8200
- NATS_URL=${NATS_URL:-nats://nats:4222}
- OLLAMA_BASE_URL=${OLLAMA_BASE_URL:-http://pmoves-ollama:11434}
- VLLM_BASE_URL=${VLLM_BASE_URL:-http://pmoves-vllm:8000}
- TTS_BASE_URL=${TTS_BASE_URL:-http://ultimate-tts-studio:7861}
- GPU_ORCHESTRATOR_MAX_MODELS=${GPU_ORCHESTRATOR_MAX_MODELS:-3}
- GPU_ORCHESTRATOR_VRAM_THRESHOLD=${GPU_ORCHESTRATOR_VRAM_THRESHOLD:-0.9}
volumes:
- ./config/gpu-models.yaml:/app/config/gpu-models.yaml:ro
ports: [ "8200:8200" ]
profiles: [ "gpu" ]
depends_on:
nats:
condition: service_started
required: false
networks: [ api_tier, bus_tier, monitoring_tier ]
healthcheck:
test: [ "CMD", "curl", "-sf", "http://localhost:8200/healthz" ]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s
extra_hosts:
- "host.docker.internal:host-gateway"

# Agents profile (opt-in): NATS broker + Agent Zero + Archon
nats:
image: nats:2.10-alpine
Expand All @@ -788,7 +848,7 @@ services:
context: .
dockerfile: ./services/agent-zero/Dockerfile
restart: unless-stopped
env_file: [ env.shared.generated, env.shared, .env.generated, .env.local ]
<<: *env-tier-agent
environment:
- PORT=8080
- NATS_URL=${NATS_URL:-nats://nats:4222}
Expand Down Expand Up @@ -824,7 +884,7 @@ services:
- ARCHON_GIT_REMOTE=${ARCHON_GIT_REMOTE:-https://github.com/POWERFULMOVES/PMOVES-Archon.git}
- ARCHON_GIT_REF=${ARCHON_GIT_REF:-main}
restart: unless-stopped
env_file: [ env.shared.generated, env.shared, .env.generated, .env.local ]
<<: *env-tier-agent
environment:
- PORT=8091
- ARCHON_SERVER_PORT=${ARCHON_SERVER_PORT:-8091}
Expand All @@ -833,9 +893,9 @@ services:
- ARCHON_AGENTS_PORT=${ARCHON_AGENTS_PORT:-8052}
- ARCHON_VENDOR_FORCE_PLACEHOLDER=${ARCHON_VENDOR_FORCE_PLACEHOLDER:-0}
- NATS_URL=${NATS_URL:-nats://nats:4222}
# Use container DNS for Supabase (same as Hi-RAG fix)
- ARCHON_SUPABASE_BASE_URL=${ARCHON_SUPABASE_BASE_URL:-http://supabase_kong_pmoves.ai:8000}
- SUPA_REST_URL=${SUPA_REST_URL:-http://supabase_kong_pmoves.ai:8000/rest/v1}
# Use container DNS for Supabase (matches supabase_kong_PMOVES.AI container name)
- ARCHON_SUPABASE_BASE_URL=${ARCHON_SUPABASE_BASE_URL:-http://supabase_kong_PMOVES.AI:8000}
- SUPA_REST_URL=${SUPA_REST_URL:-http://supabase_kong_PMOVES.AI:8000/rest/v1}
# In single-env mode, credentials come from env_file; avoid overriding with empty host vars.
depends_on:
nats:
Expand Down Expand Up @@ -868,6 +928,7 @@ services:
env_file: [ env.shared.generated, env.shared, .env.generated, .env.local ]
environment:
- PORT=8053
- ENABLE_AGENT_WORK_ORDERS=${ENABLE_AGENT_WORK_ORDERS:-true}
- AGENT_WORK_ORDERS_PORT=${AGENT_WORK_ORDERS_PORT:-8053}
- ARCHON_SERVER_URL=${ARCHON_SERVER_URL:-http://archon:8091}
- ARCHON_MCP_URL=${ARCHON_MCP_URL:-http://archon:8051}
Expand All @@ -876,7 +937,7 @@ services:
- NATS_URL=${NATS_URL:-nats://nats:4222}
- LOG_LEVEL=${AGENT_WORK_ORDERS_LOG_LEVEL:-INFO}
# Supabase connection - use internal Docker network hostname
- SUPABASE_URL=${SUPABASE_URL:-http://supabase_kong_pmoves.ai:8000}
- SUPABASE_URL=${SUPABASE_URL:-http://supabase_kong_PMOVES.AI:8000}
- SUPABASE_SERVICE_KEY=${SUPABASE_SERVICE_KEY}
# Git configuration for worktrees
- GIT_WORKTREE_BASE=${GIT_WORKTREE_BASE:-/worktrees}
Expand Down Expand Up @@ -914,7 +975,7 @@ services:
env_file: [ env.shared.generated, env.shared, .env.generated, .env.local ]
environment:
- NATS_URL=${NATS_URL:-nats://nats:4222}
- SUPABASE_URL=${SUPABASE_URL:-http://supabase-kong:8000}
- SUPABASE_URL=${SUPABASE_URL:-http://supabase_kong_PMOVES.AI:8000}
- SUPABASE_SERVICE_ROLE_KEY=${SUPABASE_SERVICE_KEY}
- TENSORZERO_URL=${TENSORZERO_URL:-http://tensorzero:3030}
- BOTZ_HEARTBEAT_INTERVAL=${BOTZ_HEARTBEAT_INTERVAL:-30}
Expand All @@ -936,6 +997,50 @@ services:
retries: 12
start_period: 15s

# E2B Sandbox Runner: Isolated code execution environment
pmz-e2b-runner:
build:
context: ../PMOVES-BoTZ/features/e2b
dockerfile: Dockerfile
restart: unless-stopped
working_dir: /app
command: uvicorn app_e2b:app --host 0.0.0.0 --port 7071
environment:
- PORT=7071
- E2B_API_KEY=${E2B_API_KEY:-}
- MCP_GATEWAY_URL=${MCP_GATEWAY_URL:-http://docker-mcp-gateway:8811}
ports: [ "7071:7071" ]
profiles: [ "workers", "botz" ]
networks: [ api_tier, app_tier ]
healthcheck:
test: [ "CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:7071/health', timeout=5)" ]
interval: 30s
timeout: 10s
retries: 3

Comment on lines +1000 to +1020

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

鈿狅笍 Potential issue | 馃煚 Major

馃З Analysis chain

馃弫 Script executed:

#!/bin/bash
# First, locate the docker-compose.yml file
echo "=== Finding docker-compose.yml ==="
find . -name "docker-compose.yml" -type f

echo ""
echo "=== Check file size to determine read strategy ==="
wc -l pmoves/docker-compose.yml 2>/dev/null || echo "File not found at pmoves/docker-compose.yml"

Repository: POWERFULMOVES/PMOVES.AI

Length of output: 453


馃弫 Script executed:

#!/bin/bash
# Read the section around lines 1025-1042 to verify if docker-mcp-gateway is commented out
echo "=== Lines 1020-1045 (to check docker-mcp-gateway status) ==="
sed -n '1020,1045p' pmoves/docker-compose.yml

echo ""
echo "=== Check the pmz-e2b-runner service (lines 1000-1020) ==="
sed -n '1000,1020p' pmoves/docker-compose.yml

Repository: POWERFULMOVES/PMOVES.AI

Length of output: 1797


馃弫 Script executed:

#!/bin/bash
# Search for all profile definitions in docker-compose.yml
echo "=== All profile usages in docker-compose.yml ==="
rg "profiles:" pmoves/docker-compose.yml -A1

echo ""
echo "=== Check if 'botz' profile is used anywhere ==="
rg "botz" pmoves/docker-compose.yml -B2 -A2 | head -30

Repository: POWERFULMOVES/PMOVES.AI

Length of output: 5800


馃弫 Script executed:

#!/bin/bash
# Check for documentation about multi-repo setup or PMOVES-BoTZ
echo "=== Searching for PMOVES-BoTZ references ==="
rg -i "pmoves-botz|PMOVES-BoTZ" . --type md --type txt 2>/dev/null | head -20

echo ""
echo "=== Check README files for setup instructions ==="
find . -name "README.md" -type f | xargs grep -l -i "botz\|multi.*repo\|sibling\|clone" 2>/dev/null | head -5

Repository: POWERFULMOVES/PMOVES.AI

Length of output: 17753


馃弫 Script executed:

#!/bin/bash
# Check if there's documentation or comments about the e2b feature
echo "=== Checking for e2b or sandbox documentation ==="
find pmoves -name "*.md" -type f 2>/dev/null | xargs grep -l -i "e2b\|sandbox" 2>/dev/null

echo ""
echo "=== Check for any .env or setup documentation ==="
ls -la pmoves/ | grep -i "env\|readme\|setup\|doc"

Repository: POWERFULMOVES/PMOVES.AI

Length of output: 3779


External repository dependency and service reference issues.

  1. Build context references sibling repo: ../PMOVES-BoTZ/features/e2b requires the PMOVES-BoTZ repository to be cloned alongside this repo. This will fail for developers who only clone PMOVES.AI. Consider publishing a pre-built image to a registry, documenting the multi-repo setup requirement, or adding a conditional or fallback.

  2. MCP_GATEWAY_URL references commented-out service: The default http://docker-mcp-gateway:8811 points to docker-mcp-gateway which is commented out (lines 1025-1042). This will cause connection failures at runtime unless MCP_GATEWAY_URL is overridden.

  3. Profile "botz" violates coding guideline: Per coding guidelines, only data and workers profiles should scope local runs. The pmz-e2b-runner service has profiles: [ "workers", "botz" ]. Remove the botz profile to comply with the guideline.

馃 Prompt for AI Agents
In pmoves/docker-compose.yml around lines 1000 to 1020 (with docker-mcp-gateway
service commented out at ~1025-1042), the pmz-e2b-runner service currently
references a sibling repo build context, a default MCP_GATEWAY_URL that points
to a commented-out service, and includes an invalid "botz" profile; fix by
replacing the local build context with a published image reference (or add a
clear comment and env-var gate that falls back to image vs local build) so
cloning PMOVES-BoTZ is not required, change the MCP_GATEWAY_URL default to an
explicit empty/default value or to a documented reachable host (and update the
README to require overriding it if docker-mcp-gateway is not enabled), and
remove "botz" from profiles so only allowed profiles (e.g., "workers") remain.

# Docker MCP Gateway: Open-standard gateway for AI model tool access
# Provides access to 200+ tools (GitHub, Notion, Stripe, etc.)
# TODO: Image mcp/gateway:latest does not exist yet - requires Docker MCP GA release
# See: https://www.docker.com/products/docker-mcp
# docker-mcp-gateway:
# image: mcp/gateway:latest
# restart: unless-stopped
# environment:
# - MCP_GATEWAY_PORT=8811
# - MCP_CATALOG_PATH=/catalog
# - MCP_AUTH_TOKEN=${MCP_GATEWAY_AUTH_TOKEN:-}
# volumes:
# - ./config/mcp-catalog:/catalog:ro
# ports: [ "8811:8811" ]
# profiles: [ "botz", "mcp" ]
# networks: [ api_tier, app_tier ]
# healthcheck:
# test: [ "CMD", "curl", "-sf", "http://localhost:8811/health" ]
# interval: 30s
# timeout: 10s
# retries: 3
# start_period: 15s

mesh-agent:
build: ./services/mesh-agent
restart: unless-stopped
Expand Down Expand Up @@ -999,8 +1104,8 @@ services:

consciousness-service:
build:
context: ./services
dockerfile: consciousness-service/Dockerfile
context: ./services/consciousness-service
dockerfile: Dockerfile
image: ${CONSCIOUSNESS_SERVICE_IMAGE:-}
restart: unless-stopped
env_file: [ env.shared.generated, env.shared, .env.generated, .env.local ]
Expand Down Expand Up @@ -1131,7 +1236,9 @@ services:
image: tensorzero/gateway:latest
restart: unless-stopped
command: [ "--config-file", "/app/config/tensorzero.toml" ]
env_file: [ env.shared.generated, env.shared, .env.generated, .env.local ]
<<: *env-tier-llm
# NOTE: This is the ONLY service with access to LLM API keys!
# All other services call TensorZero internally, not providers directly.
environment:
- TENSORZERO_CLICKHOUSE_URL=${TENSORZERO_CLICKHOUSE_URL:-http://tensorzero:tensorzero@tensorzero-clickhouse:8123/default}
- TENSORZERO_POSTGRES_URL=postgresql://${TENSORZERO_PG_USER:-tensorzero}:${TENSORZERO_PG_PASSWORD}@host.docker.internal:65432/${TENSORZERO_PG_DB:-tensorzero}
Expand Down
2 changes: 1 addition & 1 deletion pmoves/services/hi-rag-gateway/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ ENV PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1

# Base deps
RUN pip install --no-cache-dir --upgrade pip
COPY hi-rag-gateway/requirements.txt ./
COPY hi-rag-gateway/requirements.txt hi-rag-gateway/requirements.lock ./
RUN pip install --no-cache-dir -r requirements.txt

# --- CUDA-enabled Torch for Qwen reranker (optional) ---
Expand Down
2 changes: 1 addition & 1 deletion pmoves/services/pdf-ingest/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ FROM python:3.11-slim
WORKDIR /app
ENV PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1 PYTHONPATH=/app
RUN pip install --no-cache-dir --upgrade pip
COPY services/pdf-ingest/requirements.txt ./
COPY services/pdf-ingest/requirements.txt services/pdf-ingest/requirements.lock ./
RUN pip install --no-cache-dir -r requirements.txt
COPY libs /app/libs
COPY services/common /app/services/common
Expand Down
2 changes: 1 addition & 1 deletion pmoves/services/session-context-worker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ ENV PYTHONDONTWRITEBYTECODE=1 \
RUN pip install --no-cache-dir --upgrade pip

# Copy and install dependencies
COPY services/session-context-worker/requirements.txt ./requirements.txt
COPY services/session-context-worker/requirements.txt services/session-context-worker/requirements.lock ./
RUN pip install --no-cache-dir -r requirements.txt

# Copy application code
Expand Down
Loading