version: '3.8' services: db: image: mysql:8.0 container_name: lingxi_crm_db environment: MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD} MYSQL_DATABASE: ${DB_NAME} ports: - "${DB_PORT}:3306" volumes: - ./server/db/crm.sql:/docker-entrypoint-initdb.d/crm.sql - db_data:/var/lib/mysql healthcheck: test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost", "-u", "root", "-p${DB_ROOT_PASSWORD}"] timeout: 20s retries: 10 redis: image: redis:alpine container_name: lingxi_crm_redis ports: - "${REDIS_PORT}:6379" volumes: - redis_data:/data server: build: context: ./server dockerfile: Dockerfile container_name: lingxi_crm_server depends_on: db: condition: service_healthy redis: condition: service_started ports: - "${SERVER_PORT}:8000" volumes: - ./server/config.docker.yaml:/app/config.yaml - server_uploads:/app/source environment: - RUN_ENV=prod web: build: context: ./web dockerfile: Dockerfile args: - VITE_API_BASE_URL=${API_BASE_URL} container_name: lingxi_crm_web ports: - "${WEB_PORT}:80" depends_on: - server volumes: db_data: redis_data: server_uploads: