auto-create sandbox dirs and switch to host socket compose

This commit is contained in:
Азамат Нураев 2026-05-05 10:03:00 +03:00
parent 06271db003
commit d4434a0afe
3 changed files with 15 additions and 34 deletions

View file

@ -1,5 +1,6 @@
import asyncio import asyncio
from collections.abc import Awaitable, Callable from collections.abc import Awaitable, Callable
from pathlib import Path
from docker.errors import NotFound from docker.errors import NotFound
from fastapi import FastAPI from fastapi import FastAPI
@ -61,6 +62,12 @@ def _ensure_sandbox_network(container: AppContainer) -> None:
) )
def _ensure_sandbox_dirs(container: AppContainer) -> None:
cfg = container.config.sandbox
for path_str in (cfg.dependencies_host_path, cfg.lambda_tools_host_path):
Path(path_str).mkdir(parents=True, exist_ok=True)
def _build_startup_handler( def _build_startup_handler(
app: FastAPI, app: FastAPI,
container: AppContainer, container: AppContainer,
@ -71,6 +78,7 @@ def _build_startup_handler(
return return
await asyncio.to_thread(_ensure_sandbox_network, container) await asyncio.to_thread(_ensure_sandbox_network, container)
await asyncio.to_thread(_ensure_sandbox_dirs, container)
await asyncio.to_thread(container.sandbox_reconciler.execute) await asyncio.to_thread(container.sandbox_reconciler.execute)
stop_event = asyncio.Event() stop_event = asyncio.Event()

View file

@ -25,7 +25,7 @@ otel:
metric_export_interval: 1000 metric_export_interval: 1000
docker: docker:
base_url: tcp://docker-engine:2375 base_url: unix:///var/run/docker.sock
sandbox: sandbox:
image: nginx:1.27-alpine image: nginx:1.27-alpine
@ -33,9 +33,9 @@ sandbox:
agent_service_port: 8000 agent_service_port: 8000
ttl_seconds: 300 ttl_seconds: 300
cleanup_interval_seconds: 60 cleanup_interval_seconds: 60
chats_root: /var/lib/master-sandbox/chats chats_root: /tmp/master-sandbox/chats
dependencies_host_path: /var/lib/master-dependencies dependencies_host_path: /tmp/master-sandbox/dependencies
lambda_tools_host_path: /var/lib/master-lambda-tools lambda_tools_host_path: /tmp/master-sandbox/lambda-tools
chat_mount_path: /workspace/chat chat_mount_path: /workspace/chat
dependencies_mount_path: /opt/dependencies dependencies_mount_path: /opt/dependencies
lambda_tools_mount_path: /opt/lambda-tools lambda_tools_mount_path: /opt/lambda-tools

View file

@ -6,8 +6,6 @@ services:
target: run target: run
user: root user: root
depends_on: depends_on:
docker-engine:
condition: service_healthy
otel-collector: otel-collector:
condition: service_started condition: service_started
environment: environment:
@ -17,30 +15,9 @@ services:
- '127.0.0.1:8123:8123' - '127.0.0.1:8123:8123'
volumes: volumes:
- ./config/docker-compose.yml:/app/config/app.yaml:ro - ./config/docker-compose.yml:/app/config/app.yaml:ro
- sandbox-data:/var/lib/master-sandbox - /var/run/docker.sock:/var/run/docker.sock
- sandbox-dependencies:/var/lib/master-dependencies:ro - /tmp/master-sandbox:/tmp/master-sandbox
- sandbox-tools:/var/lib/master-lambda-tools:ro - /tmp/master-volume:/tmp/master-volume
docker-engine:
image: docker:28-dind
privileged: true
environment:
DOCKER_TLS_CERTDIR: ''
command:
- --host=tcp://0.0.0.0:2375
healthcheck:
test:
- CMD
- docker
- info
interval: 5s
timeout: 5s
retries: 12
volumes:
- docker-data:/var/lib/docker
- sandbox-data:/var/lib/master-sandbox
- sandbox-dependencies:/var/lib/master-dependencies
- sandbox-tools:/var/lib/master-lambda-tools
otel-collector: otel-collector:
image: grafana/otel-lgtm:latest image: grafana/otel-lgtm:latest
@ -50,8 +27,4 @@ services:
- lgtm-data:/data - lgtm-data:/data
volumes: volumes:
docker-data:
lgtm-data: lgtm-data:
sandbox-data:
sandbox-dependencies:
sandbox-tools: