version: "3.9" services: shopify-ai-builder: image: shopify-ai-builder:latest build: context: . # Portainer automatically detects host architecture and passes TARGETARCH to Dockerfile # This enables reliable multi-architecture builds (amd64, arm64, etc.) ports: - "4501:4501" - "4500:4500" restart: unless-stopped environment: - OPENCODE_API_KEY=${OPENCODE_API_KEY:-} - XDG_DATA_HOME=/home/web/data/.opencode/local_share - GITHUB_PAT=${GITHUB_PAT:-} - GITHUB_PAT_FILE=${GITHUB_PAT_FILE:-/run/secrets/GITHUB_PAT} - GITHUB_USERNAME=${GITHUB_USERNAME:-} - GITHUB_CLIENT_ID=${GITHUB_CLIENT_ID:-} - GITHUB_CLIENT_SECRET=${GITHUB_CLIENT_SECRET:-} # OpenRouter planning mode - OPENROUTER_API_KEY=${OPENROUTER_API_KEY:-} - OPENROUTER_API_URL=${OPENROUTER_API_URL:-} - OPENROUTER_MODEL_PRIMARY=${OPENROUTER_MODEL_PRIMARY:-} - OPENROUTER_MODEL_BACKUP_1=${OPENROUTER_MODEL_BACKUP_1:-} - OPENROUTER_MODEL_BACKUP_2=${OPENROUTER_MODEL_BACKUP_2:-} - OPENROUTER_MODEL_BACKUP_3=${OPENROUTER_MODEL_BACKUP_3:-} - OPENROUTER_DEFAULT_MODEL=${OPENROUTER_DEFAULT_MODEL:-} - OPENROUTER_FALLBACK_MODELS=${OPENROUTER_FALLBACK_MODELS:-} - OPENROUTER_PLAN_PROMPT_PATH=${OPENROUTER_PLAN_PROMPT_PATH:-} - OPENROUTER_APP_NAME=${OPENROUTER_APP_NAME:-} - OPENROUTER_SITE_URL=${OPENROUTER_SITE_URL:-} # Mistral Configuration - MISTRAL_API_KEY=${MISTRAL_API_KEY:-} - MISTRAL_API_URL=${MISTRAL_API_URL:-} - MISTRAL_MODEL_PRIMARY=${MISTRAL_MODEL_PRIMARY:-} - MISTRAL_MODEL_BACKUP_1=${MISTRAL_MODEL_BACKUP_1:-} - MISTRAL_MODEL_BACKUP_2=${MISTRAL_MODEL_BACKUP_2:-} # Other Providers - GROQ_API_KEY=${GROQ_API_KEY:-} - GROQ_API_TOKEN=${GROQ_API_TOKEN:-} - GOOGLE_API_KEY=${GOOGLE_API_KEY:-} - NVIDIA_API_KEY=${NVIDIA_API_KEY:-} - OLLAMA_API_URL=${OLLAMA_API_URL:-} - OLLAMA_API_KEY=${OLLAMA_API_KEY:-} - REPO_URL=${REPO_URL:-} - REPO_BRANCH=${REPO_BRANCH:-main} - ACCESS_PASSWORD=${ACCESS_PASSWORD:-} # Dodo Payments Integration - DODO_PAYMENTS_API_KEY=${DODO_PAYMENTS_API_KEY:-} - DODO_PAYMENTS_ENV=${DODO_PAYMENTS_ENV:-test} - DODO_PAYMENTS_WEBHOOK_KEY=${DODO_PAYMENTS_WEBHOOK_KEY:-} - DODO_TOPUP_PRODUCT_1=${DODO_TOPUP_PRODUCT_1:-} - DODO_TOPUP_PRODUCT_2=${DODO_TOPUP_PRODUCT_2:-} - DODO_TOPUP_PRODUCT_3=${DODO_TOPUP_PRODUCT_3:-} - DODO_TOPUP_PRODUCT_4=${DODO_TOPUP_PRODUCT_4:-} - DODO_TOPUP_TOKENS_1=${DODO_TOPUP_TOKENS_1:-100000} - DODO_TOPUP_TOKENS_2=${DODO_TOPUP_TOKENS_2:-5000000} - DODO_TOPUP_TOKENS_3=${DODO_TOPUP_TOKENS_3:-20000000} - DODO_TOPUP_TOKENS_4=${DODO_TOPUP_TOKENS_4:-50000000} - DODO_MIN_AMOUNT=${DODO_MIN_AMOUNT:-50} # Subscription Plans - Starter - DODO_STARTER_MONTHLY_USD=${DODO_STARTER_MONTHLY_USD:-} - DODO_STARTER_YEARLY_USD=${DODO_STARTER_YEARLY_USD:-} - DODO_STARTER_MONTHLY_GBP=${DODO_STARTER_MONTHLY_GBP:-} - DODO_STARTER_YEARLY_GBP=${DODO_STARTER_YEARLY_GBP:-} - DODO_STARTER_MONTHLY_EUR=${DODO_STARTER_MONTHLY_EUR:-} - DODO_STARTER_YEARLY_EUR=${DODO_STARTER_YEARLY_EUR:-} # Subscription Plans - Professional - DODO_PROFESSIONAL_MONTHLY_USD=${DODO_PROFESSIONAL_MONTHLY_USD:-} - DODO_PROFESSIONAL_YEARLY_USD=${DODO_PROFESSIONAL_YEARLY_USD:-} - DODO_PROFESSIONAL_MONTHLY_GBP=${DODO_PROFESSIONAL_MONTHLY_GBP:-} - DODO_PROFESSIONAL_YEARLY_GBP=${DODO_PROFESSIONAL_YEARLY_GBP:-} - DODO_PROFESSIONAL_MONTHLY_EUR=${DODO_PROFESSIONAL_MONTHLY_EUR:-} - DODO_PROFESSIONAL_YEARLY_EUR=${DODO_PROFESSIONAL_YEARLY_EUR:-} # Subscription Plans - Enterprise - DODO_ENTERPRISE_MONTHLY_USD=${DODO_ENTERPRISE_MONTHLY_USD:-} - DODO_ENTERPRISE_YEARLY_USD=${DODO_ENTERPRISE_YEARLY_USD:-} - DODO_ENTERPRISE_MONTHLY_GBP=${DODO_ENTERPRISE_MONTHLY_GBP:-} - DODO_ENTERPRISE_YEARLY_GBP=${DODO_ENTERPRISE_YEARLY_GBP:-} - DODO_ENTERPRISE_MONTHLY_EUR=${DODO_ENTERPRISE_MONTHLY_EUR:-} - DODO_ENTERPRISE_YEARLY_EUR=${DODO_ENTERPRISE_YEARLY_EUR:-} # Pay-as-you-go - DODO_PAYG_USD=${DODO_PAYG_USD:-} - DODO_PAYG_GBP=${DODO_PAYG_GBP:-} - DODO_PAYG_EUR=${DODO_PAYG_EUR:-} - DODO_PAYG_ENABLED=${DODO_PAYG_ENABLED:-1} # Google OAuth - GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID:-} - GOOGLE_CLIENT_SECRET=${GOOGLE_CLIENT_SECRET:-} - PUBLIC_BASE_URL=${PUBLIC_BASE_URL:-} # Session Secret - SESSION_SECRET=${SESSION_SECRET:-} # Admin Authentication - ADMIN_USER=${ADMIN_USER:-} - ADMIN_PASSWORD=${ADMIN_PASSWORD:-} - ADMIN_SESSION_TTL_MS=${ADMIN_SESSION_TTL_MS:-} - COOKIE_SECURE=${COOKIE_SECURE:-} volumes: - pwsh_profile:/root/.config/powershell - web_data:/home/web/data deploy: resources: limits: cpus: '0.50' memory: 1536M secrets: - GITHUB_PAT stop_grace_period: 30s volumes: pwsh_profile: name: shopify_ai_pwsh_profile web_data: name: shopify_ai_data secrets: GITHUB_PAT: external: true