name: crow-studio services: studio: image: crow-studio:0.2.0 build: . init: true restart: unless-stopped ports: - "${BIND_ADDRESS:-127.0.0.1}:${STUDIO_PORT:-8098}:8080" environment: STUDIO_PASSWORD: ${STUDIO_PASSWORD:?Execute sh scripts/start.sh primeiro} SESSION_SECRET: ${SESSION_SECRET:?Execute sh scripts/start.sh primeiro} PUBLIC_URL: ${PUBLIC_URL:-} COOKIE_SECURE: ${COOKIE_SECURE:-false} TRUSTED_PROXY_IPS: ${TRUSTED_PROXY_IPS:-} AI_PROVIDER: ${AI_PROVIDER:-ollama} OLLAMA_BASE_URL: ${OLLAMA_BASE_URL:-http://inference:11434} OLLAMA_MODEL: ${OLLAMA_MODEL:-qwen3:1.7b} OPENAI_API_KEY: ${OPENAI_API_KEY:-} OPENAI_BASE_URL: ${OPENAI_BASE_URL:-} OPENAI_MODEL: ${OPENAI_MODEL:-} AI_TIMEOUT_MS: ${AI_TIMEOUT_MS:-85000} volumes: - crow_data:/data tmpfs: - /tmp:size=256m,mode=1777,noexec,nosuid extra_hosts: - "host.docker.internal:host-gateway" read_only: true cap_drop: [ALL] security_opt: [no-new-privileges:true] mem_limit: 1g pids_limit: 128 logging: driver: json-file options: max-size: "10m" max-file: "3" networks: [default, inference] inference: image: ollama/ollama@sha256:0e8ff22ff86b4718cfa886844062117af13b50eb5689cca78279778e15744980 restart: unless-stopped environment: OLLAMA_HOST: 0.0.0.0:11434 OLLAMA_CONTEXT_LENGTH: "2048" OLLAMA_NUM_PARALLEL: "1" OLLAMA_MAX_LOADED_MODELS: "1" OLLAMA_MAX_QUEUE: "1" OLLAMA_KEEP_ALIVE: "0" OLLAMA_NO_CLOUD: "1" CUDA_VISIBLE_DEVICES: "-1" volumes: - ollama:/root/.ollama networks: [inference] tmpfs: - /tmp:size=256m,mode=1777,noexec,nosuid read_only: true cap_drop: [ALL] security_opt: [no-new-privileges:true] mem_limit: 2500m memswap_limit: 2500m cpus: 2 pids_limit: 128 healthcheck: test: [CMD, ollama, list] interval: 30s timeout: 5s start_period: 15s retries: 3 logging: driver: json-file options: max-size: "10m" max-file: "3" volumes: crow_data: ollama: networks: inference: internal: true