# docker-compose.yml version: '3.8' services: db: image: postgres:15 restart: always environment: POSTGRES_DB: wizamart_db POSTGRES_USER: ecommerce_user POSTGRES_PASSWORD: secure_password volumes: - postgres_data:/var/lib/postgresql/data - ./init.sql:/docker-entrypoint-initdb.d/init.sql ports: - "5432:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U wizamart_user -d wizamart_db"] interval: 30s timeout: 10s retries: 3 redis: image: redis:7-alpine restart: always ports: - "6379:6379" healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 30s timeout: 10s retries: 3 api: build: . restart: always ports: - "8000:8000" environment: DATABASE_URL: postgresql://wizamart_user:secure_password@db:5432/wizamart_db JWT_SECRET_KEY: ${JWT_SECRET_KEY:-your-super-secret-key} REDIS_URL: redis://redis:6379/0 depends_on: db: condition: service_healthy redis: condition: service_healthy volumes: - ./logs:/app/logs healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/health"] interval: 30s timeout: 10s retries: 3 volumes: postgres_data: