services: db: image: postgres:17-alpine environment: POSTGRES_DB: ${POSTGRES_DB:-fishiq} POSTGRES_USER: ${POSTGRES_USER:-fishiq} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-fishiq_dev} volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-fishiq} -d ${POSTGRES_DB:-fishiq}"] interval: 5s timeout: 5s retries: 10 redis: image: redis:7-alpine healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 3s retries: 10 api: build: ./apps/api command: sh -c "python manage.py migrate && python manage.py runserver 0.0.0.0:8000" env_file: .env volumes: - ./apps/api:/app ports: - "8000:8000" depends_on: db: condition: service_healthy redis: condition: service_healthy web: build: ./apps/web environment: VITE_API_URL: ${VITE_API_URL:-http://localhost:8000/api} volumes: - ./apps/web:/app - web_node_modules:/app/node_modules ports: - "5173:5173" depends_on: - api volumes: postgres_data: web_node_modules: