version: '3.8' services: frontend: build: context: ./router-dashboard dockerfile: dockerfile ports: - "5173:5173" environment: - VITE_API_URL=${VITE_API_URL} restart: always depends_on: backend: condition: service_healthy container_name: router_dashboard_frontend backend: build: context: ./ve-router-backend dockerfile: dockerfile ports: - "3000:3000" environment: - NODE_ENV=${NODE_ENV} - DB_HOST=host.docker.internal - DB_PORT=3306 - DB_USER=ve_router_user - DB_PASSWORD=ve_router_password - DB_NAME=${DB_NAME} restart: always depends_on: mysql: condition: service_healthy healthcheck: test: ["CMD", "nc", "-z", "localhost", "3000"] # Netcat check to see if port 3000 is open interval: 30s # Check every 30 seconds retries: 3 # Retry 3 times before marking unhealthy start_period: 30s # Wait 30 seconds before starting health checks timeout: 10s # Wait for 10 seconds for each health check to respond mysql: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: rootpassword MYSQL_DATABASE: ve_router_db MYSQL_USER: ve_router_user MYSQL_PASSWORD: ve_router_password volumes: - mysql_data:/var/lib/mysql # Correct paths for init scripts - ./sql:/docker-entrypoint-initdb.d ports: - "3306:3306" command: --default-authentication-plugin=mysql_native_password restart: always healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "ve_router_user", "-pve_router_password"] interval: 10s timeout: 5s retries: 5 start_period: 30s volumes: mysql_data: