version: '3' services: mysql: image: registry.cn-shenzhen.aliyuncs.com/breeze-project/mysql:8.0.33 container_name: ruoyi-ai-mysql env_file: - ./.env environment: - MYSQL_ROOT_PASSWORD={{MYSQL_ROOT_PASSWORD}} - MYSQL_DATABASE={{MYSQL_DATABASE}} ports: - "{{MYSQL_PORT}}:3306" volumes: - ./mysql-init:/docker-entrypoint-initdb.d - ./data/mysql:/var/lib/mysql command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --explicit_defaults_for_timestamp=true --lower_case_table_names=1 restart: always networks: - ruoyi-net redis: image: registry.cn-shenzhen.aliyuncs.com/breeze-project/redis:6.2 container_name: ruoyi-ai-redis env_file: - ./.env ports: - "{{REDIS_PORT}}:6379" volumes: - ./data/redis:/data command: redis-server --appendonly yes ${REDIS_PASSWORD:+--requirepass ${REDIS_PASSWORD}} restart: always networks: - ruoyi-net weaviate: image: registry.cn-shenzhen.aliyuncs.com/breeze-project/weaviate:1.30.0 container_name: ruoyi-ai-weaviate ports: - "{{WEAVIATE_HTTP_PORT}}:8080" - "{{WEAVIATE_GRPC_PORT}}:50051" volumes: - ./data/weaviate:/var/lib/weaviate env_file: - ./.env environment: - QUERY_DEFAULTS_LIMIT={{WEAVIATE_QUERY_LIMIT}} - AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED={{WEAVIATE_ANONYMOUS_ACCESS}} - PERSISTENCE_DATA_PATH={{WEAVIATE_DATA_PATH}} - DEFAULT_VECTORIZER_MODULE={{WEAVIATE_VECTORIZER_MODULE}} - ENABLE_MODULES={{WEAVIATE_MODULES}} - CLUSTER_HOSTNAME={{WEAVIATE_CLUSTER_HOSTNAME}} command: --host 0.0.0.0 --port 8080 --scheme http restart: always networks: - ruoyi-net ruoyi-backend: image: ruoyi-ai-backend:latest container_name: ruoyi-ai-backend env_file: - ./.env ports: - "{{SERVER_PORT}}:{{SERVER_PORT}}" environment: - SERVER_PORT={{SERVER_PORT}} - DB_URL={{DB_URL}} - DB_USERNAME={{DB_USERNAME}} - DB_PASSWORD={{DB_PASSWORD}} - REDIS_HOST={{REDIS_HOST}} - REDIS_PORT={{REDIS_PORT}} - REDIS_DATABASE={{REDIS_DATABASE}} - REDIS_PASSWORD={{REDIS_PASSWORD}} - REDIS_TIMEOUT={{REDIS_TIMEOUT}} - TZ={{TZ}} volumes: - ./data/logs:/ruoyi/server/logs restart: always depends_on: - mysql - redis - weaviate networks: - ruoyi-net ruoyi-admin: image: ruoyi-ai-admin:latest container_name: ruoyi-ai-admin ports: - "{{ADMIN_PORT}}:80" restart: always depends_on: - ruoyi-backend networks: - ruoyi-net ruoyi-web: image: ruoyi-ai-web:latest container_name: ruoyi-ai-web ports: - "{{WEB_PORT}}:80" restart: always depends_on: - ruoyi-backend networks: - ruoyi-net networks: ruoyi-net: driver: bridge