version: '3.8' name: video-platform services: # 基础设施服务 mysql: image: mysql:8.0 container_name: mysql restart: always environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: video_platform MYSQL_USER: video MYSQL_PASSWORD: video123 ports: - "3306:3306" volumes: - mysql_data:/var/lib/mysql - ./sql:/docker-entrypoint-initdb.d command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password networks: - video-network redis: image: redis:7.0-alpine container_name: redis restart: always ports: - "6379:6379" volumes: - redis_data:/data command: redis-server --requirepass redis_EsJ8FX networks: - video-network nacos: image: nacos/nacos-server:v2.3.2 container_name: nacos restart: always environment: - MODE=standalone - JVM_XMS=512m - JVM_XMX=512m # 添加Nacos参数,确保正确处理服务注册 - NACOS_AUTH_ENABLE=false - PREFER_HOST_MODE=hostname - NACOS_SERVER_IP=${HOST_IP:-127.0.0.1} ports: - "8848:8848" - "9848:9848" - "9849:9849" networks: - video-network rmqnamesrv: image: apache/rocketmq:5.1.4 container_name: rmqnamesrv restart: always ports: - "9876:9876" command: sh mqnamesrv networks: - video-network rmqbroker: image: apache/rocketmq:5.1.4 container_name: rmqbroker restart: always ports: - "10909:10909" - "10911:10911" environment: - NAMESRV_ADDR=rmqnamesrv:9876 - JAVA_OPTS=-Duser.home=/opt command: sh mqbroker -c /home/rocketmq/rocketmq-5.1.4/conf/broker.conf depends_on: - rmqnamesrv networks: - video-network minio: image: quay.io/minio/minio container_name: minio restart: always ports: - "9002:9000" - "9001:9001" environment: - MINIO_ROOT_USER=minioadmin - MINIO_ROOT_PASSWORD=minioadmin volumes: - minio_data:/data command: server /data --console-address ":9001" networks: - video-network sentinel: image: sentinel-dashboard:1.8.6 container_name: sentinel restart: always ports: - "8880:8080" networks: - video-network # 微服务 video-gateway: build: context: ./video-gateway dockerfile: Dockerfile container_name: video-gateway restart: always ports: - "9000:9000" environment: - SPRING_PROFILES_ACTIVE=prod - NACOS_HOST=nacos - NACOS_PORT=8848 - SENTINEL_HOST=sentinel - SENTINEL_PORT=8080 - JAVA_OPTS=-Xms128m -Xmx128m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m # 添加IP环境变量,用于服务注册 - GATEWAY_IP=${HOST_IP:-127.0.0.1} depends_on: - nacos deploy: resources: limits: memory: 256M networks: - video-network video-auth: build: context: ./video-auth dockerfile: Dockerfile container_name: video-auth restart: always environment: - SPRING_PROFILES_ACTIVE=prod - NACOS_HOST=nacos - NACOS_PORT=8848 - MYSQL_HOST=mysql - MYSQL_PORT=3306 - REDIS_HOST=redis - REDIS_PORT=6379 # 添加IP环境变量,用于服务注册 - AUTH_IP=${HOST_IP:-127.0.0.1} depends_on: - nacos - mysql - redis networks: - video-network video-user: build: context: ./video-user dockerfile: Dockerfile container_name: video-user restart: always environment: - SPRING_PROFILES_ACTIVE=prod - NACOS_HOST=nacos - NACOS_PORT=8848 - MYSQL_HOST=mysql - MYSQL_PORT=3306 - REDIS_HOST=redis - REDIS_PORT=6379 # 添加IP环境变量,用于服务注册 - USER_IP=${HOST_IP:-127.0.0.1} depends_on: - nacos - mysql - redis networks: - video-network video-content: build: context: ./video-content dockerfile: Dockerfile container_name: video-content restart: always environment: - SPRING_PROFILES_ACTIVE=prod - NACOS_HOST=nacos - NACOS_PORT=8848 - MYSQL_HOST=mysql - MYSQL_PORT=3306 - REDIS_HOST=redis - REDIS_PORT=6379 - ROCKETMQ_HOST=rmqnamesrv - ROCKETMQ_PORT=9876 - MINIO_HOST=minio - MINIO_PORT=9000 - MINIO_ACCESS_KEY=minioadmin - MINIO_SECRET_KEY=minioadmin - MINIO_BUCKET=video-platform # 添加IP环境变量,用于服务注册 - CONTENT_IP=${HOST_IP:-127.0.0.1} depends_on: - nacos - mysql - redis - rmqnamesrv - minio networks: - video-network video-admin: build: context: ./video-admin dockerfile: Dockerfile container_name: video-admin restart: always environment: - SPRING_PROFILES_ACTIVE=prod - NACOS_HOST=nacos - NACOS_PORT=8848 - MYSQL_HOST=mysql - MYSQL_PORT=3306 - REDIS_HOST=redis - REDIS_PORT=6379 # 添加IP环境变量,用于服务注册 - ADMIN_IP=${HOST_IP:-127.0.0.1} depends_on: - nacos - mysql - redis networks: - video-network video-comment: build: context: ./video-comment dockerfile: Dockerfile container_name: video-comment restart: always environment: - SPRING_PROFILES_ACTIVE=prod - NACOS_HOST=nacos - NACOS_PORT=8848 - MYSQL_HOST=mysql - MYSQL_PORT=3306 - REDIS_HOST=redis - REDIS_PORT=6379 # 添加IP环境变量,用于服务注册 - COMMENT_IP=${HOST_IP:-127.0.0.1} depends_on: - nacos - mysql - redis networks: - video-network video-recommend: build: context: ./video-recommend dockerfile: Dockerfile container_name: video-recommend restart: always environment: - SPRING_PROFILES_ACTIVE=prod - NACOS_HOST=nacos - NACOS_PORT=8848 - MYSQL_HOST=mysql - MYSQL_PORT=3306 - REDIS_HOST=redis - REDIS_PORT=6379 # 添加IP环境变量,用于服务注册 - RECOMMEND_IP=${HOST_IP:-127.0.0.1} depends_on: - nacos - mysql - redis networks: - video-network networks: video-network: driver: bridge volumes: mysql_data: redis_data: minio_data: