version: '3.8' services: api: build: context: . dockerfile: Dockerfile container_name: marketscope-api restart: unless-stopped ports: - "3000:3000" environment: - NODE_ENV=production - DATABASE_URL=mysql://marketscope:marketscope_pass@mysql:3306/marketscope - REDIS_URL=redis://redis:6379 env_file: - .env depends_on: mysql: condition: service_healthy redis: condition: service_healthy networks: - marketscope-network volumes: - api-logs:/app/logs mysql: image: mysql:8.0 container_name: marketscope-mysql restart: unless-stopped ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: root_password_change_this MYSQL_DATABASE: marketscope MYSQL_USER: marketscope MYSQL_PASSWORD: marketscope_pass volumes: - mysql-data:/var/lib/mysql healthcheck: test: [ "CMD", "mysqladmin", "ping", "-h", "localhost" ] interval: 10s timeout: 5s retries: 5 networks: - marketscope-network redis: image: redis:7-alpine container_name: marketscope-redis restart: unless-stopped ports: - "6379:6379" volumes: - redis-data:/data healthcheck: test: [ "CMD", "redis-cli", "ping" ] interval: 10s timeout: 5s retries: 5 command: redis-server --appendonly yes --maxmemory 256mb --maxmemory-policy allkeys-lru networks: - marketscope-network volumes: mysql-data: redis-data: api-logs: networks: marketscope-network: driver: bridge