services: simstudio: image: ghcr.io/simstudioai/simstudio:latest restart: unless-stopped ports: - '3000:3000' deploy: resources: limits: memory: 8G environment: - DATABASE_URL=postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@db:5432/${POSTGRES_DB:-simstudio} - BETTER_AUTH_URL=${NEXT_PUBLIC_APP_URL:-http://localhost:3000} - NEXT_PUBLIC_APP_URL=${NEXT_PUBLIC_APP_URL:-http://localhost:3000} - BETTER_AUTH_SECRET=${BETTER_AUTH_SECRET:-your_auth_secret_here} - ENCRYPTION_KEY=${ENCRYPTION_KEY:-your_encryption_key_here} - FREESTYLE_API_KEY=${FREESTYLE_API_KEY:-placeholder} - GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID:-placeholder} - GOOGLE_CLIENT_SECRET=${GOOGLE_CLIENT_SECRET:-placeholder} - GITHUB_CLIENT_ID=${GITHUB_CLIENT_ID:-placeholder} - GITHUB_CLIENT_SECRET=${GITHUB_CLIENT_SECRET:-placeholder} - RESEND_API_KEY=${RESEND_API_KEY:-placeholder} - OLLAMA_URL=${OLLAMA_URL:-http://localhost:11434} depends_on: db: condition: service_healthy migrations: condition: service_completed_successfully migrations: image: ghcr.io/simstudioai/migrations:latest environment: - DATABASE_URL=postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@db:5432/${POSTGRES_DB:-simstudio} depends_on: - db command: ['bun', 'run', 'db:push'] restart: 'no' db: image: postgres:17-alpine restart: unless-stopped ports: - '5432:5432' environment: - POSTGRES_USER=${POSTGRES_USER:-postgres} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-postgres} - POSTGRES_DB=${POSTGRES_DB:-simstudio} volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ['CMD-SHELL', 'pg_isready -U postgres'] interval: 5s timeout: 5s retries: 5 volumes: postgres_data: