CD / docker-compose.yml
tkadkghdlf's picture
Sync from GitHub via hub-sync
f711f7f verified
Raw
History Blame Contribute Delete
4.39 kB
name: tranimal
services:
main:
build:
context: ./main
dockerfile: Dockerfile
ports:
- "3000:3000"
volumes:
- ./main:/app
- /app/node_modules
- /app/.next
environment:
- NODE_ENV=development
- NEXT_PUBLIC_API_BASE_URL=http://localhost:8000
- NEXT_PUBLIC_GOOGLE_CLIENT_ID=${NEXT_PUBLIC_GOOGLE_CLIENT_ID:-}
- WATCHPACK_POLLING=true
- CHOKIDAR_USEPOLLING=true
command: npm run dev -- -H 0.0.0.0 -p 3000
depends_on:
- api-gateway
api-gateway:
build:
context: ./api/api-gateway
dockerfile: Dockerfile
ports:
- "8000:8000"
environment:
- AUTH_SERVICE_URL=http://auth-service:8001
- AI_SERVICE_URL=http://ai-service:8002
- AI_PROXY_TIMEOUT_SECONDS=900
- CORS_ORIGINS=http://localhost:3000
volumes:
- ./api/api-gateway:/app
depends_on:
- auth-service
- ai-service
command: uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
ai-service:
build:
context: ./api/ai-service
dockerfile: Dockerfile
ports:
- "8002:8002"
environment:
- CORS_ORIGINS=http://localhost:3000
- AI_WORKSPACE_DIR=/workspace/router/ai
- PYTHON_COMMAND=python
- SCRIPT_TIMEOUT_SECONDS=900
- DEFAULT_LABELS=cup,face,cloud,ice_cream,t_shirt,fish,apple,candle
- DEFAULT_PROTOTYPE_PATH=${DEFAULT_PROTOTYPE_PATH:-data/quickdraw/quickdraw_clip_prototypes_8labels.pt}
- DEFAULT_REPRESENTATIVE_PATH=${DEFAULT_REPRESENTATIVE_PATH:-data/quickdraw/quickdraw_clip_representatives_8labels_top100.pt}
- REPRESENTATIVE_TOP_K=${REPRESENTATIVE_TOP_K:-5}
- GATV2_SCORER_PATH=${GATV2_SCORER_PATH:-data/models/gatv2_edge_scorer_current.pt}
- GATV2_WEIGHT=${GATV2_WEIGHT:-0.25}
- PROTOTYPE_PGVECTOR_URL=${PROTOTYPE_PGVECTOR_URL:-}
- PROTOTYPE_PGVECTOR_TABLE=${PROTOTYPE_PGVECTOR_TABLE:-quickdraw_prototypes}
- PROTOTYPE_PGVECTOR_SOURCE=${PROTOTYPE_PGVECTOR_SOURCE:-quickdraw_avg_v1}
- TEXT_PROTOTYPE_PGVECTOR_URL=${TEXT_PROTOTYPE_PGVECTOR_URL:-}
- TEXT_PROTOTYPE_PGVECTOR_TABLE=${TEXT_PROTOTYPE_PGVECTOR_TABLE:-quickdraw_text_prototypes}
- TEXT_PROTOTYPE_PGVECTOR_SOURCE=${TEXT_PROTOTYPE_PGVECTOR_SOURCE:-clip_text_prompt_avg_v1}
- IMAGE_PROTO_WEIGHT=${IMAGE_PROTO_WEIGHT:-1.0}
- TEXT_PROTO_WEIGHT=${TEXT_PROTO_WEIGHT:-0.0}
- EMBEDDING_PGVECTOR_URL=${EMBEDDING_PGVECTOR_URL:-}
- EMBEDDING_PGVECTOR_TABLE=${EMBEDDING_PGVECTOR_TABLE:-quickdraw_embeddings}
- EMBEDDING_PGVECTOR_SOURCE=${EMBEDDING_PGVECTOR_SOURCE:-quickdraw_train_v1}
- PSEUDO_LABEL_MIN_CLIP_SCORE=${PSEUDO_LABEL_MIN_CLIP_SCORE:-0.7}
- PSEUDO_LABEL_SAVE_ALL_LABELS=${PSEUDO_LABEL_SAVE_ALL_LABELS:-false}
- TTS_MODEL_NAME=myshell-ai/MeloTTS-Korean
- TTS_DEVICE=${TTS_DEVICE:-cpu}
- TTS_SPEED=${TTS_SPEED:-1.0}
- TTS_CACHE_DIR=/workspace/ai/tts_cache
volumes:
- ./api/ai-service:/app
- ./router:/workspace/router
- ./ai:/workspace/ai
- ai_hf_cache:/workspace/.cache/huggingface
command: uvicorn app.main:app --host 0.0.0.0 --port 8002 --reload
auth-service:
build:
context: ./api/auth-service
dockerfile: Dockerfile
ports:
- "8001:8001"
environment:
- DATABASE_URL=${AUTH_DATABASE_URL:?AUTH_DATABASE_URL is required}
- JWT_SECRET_KEY=change-me
- JWT_ALGORITHM=HS256
- ACCESS_TOKEN_EXPIRE_MINUTES=60
- PASSWORD_RESET_TOKEN_EXPIRE_MINUTES=${PASSWORD_RESET_TOKEN_EXPIRE_MINUTES:-30}
- EMAIL_VERIFICATION_CODE_EXPIRE_MINUTES=${EMAIL_VERIFICATION_CODE_EXPIRE_MINUTES:-10}
- EMAIL_VERIFICATION_VERIFIED_TTL_MINUTES=${EMAIL_VERIFICATION_VERIFIED_TTL_MINUTES:-30}
- PASSWORD_RESET_FRONTEND_URL=${PASSWORD_RESET_FRONTEND_URL:-http://localhost:3000/password-reset}
- SMTP_HOST=${SMTP_HOST:-}
- SMTP_PORT=${SMTP_PORT:-587}
- SMTP_USERNAME=${SMTP_USERNAME:-}
- SMTP_PASSWORD=${SMTP_PASSWORD:-}
- SMTP_USE_TLS=${SMTP_USE_TLS:-true}
- SMTP_FROM_EMAIL=${SMTP_FROM_EMAIL:-}
- SMTP_FROM_NAME=${SMTP_FROM_NAME:-Runnimal}
- GOOGLE_OAUTH_CLIENT_ID=${GOOGLE_OAUTH_CLIENT_ID:-}
- CORS_ORIGINS=http://localhost:3000
volumes:
- ./api/auth-service:/app
command: uvicorn app.main:app --host 0.0.0.0 --port 8001 --reload
volumes:
ai_hf_cache: