x-logging: &default-logging driver: "json-file" options: max-size: "10m" max-file: "10" networks: playedu: driver: bridge ipam: driver: default config: - subnet: 172.10.10.0/24 volumes: mysql-data: redis-data: minio-data: kafka-data: services: redis: image: registry.cn-hangzhou.aliyuncs.com/hzbs/redis:7.0.12 restart: always volumes: - redis-data:/data ports: - "${PORT_EXTERNAL_REDIS}:6379" networks: - playedu logging: *default-logging mysql: image: registry.cn-hangzhou.aliyuncs.com/hzbs/mysql:8.1 restart: always environment: - MYSQL_DATABASE=${DB_NAME} - MYSQL_ROOT_PASSWORD=${DB_PASS} volumes: - mysql-data:/var/lib/mysql ports: - "${PORT_EXTERNAL_MYSQL}:3306" networks: - playedu logging: *default-logging minio: image: registry.cn-hangzhou.aliyuncs.com/hzbs/bitnami-minio:2024.6.6 restart: always environment: - MINIO_ROOT_USER=${S3_ACCESS_KEY_ID} - MINIO_ROOT_PASSWORD=${S3_SECRET_ACCESS_KEY} - MINIO_DEFAULT_BUCKETS=${S3_BUCKET} volumes: - minio-data:/bitnami/minio/data networks: - playedu logging: *default-logging kafka: image: registry.cn-hangzhou.aliyuncs.com/hzbs/bitnami-kafka:3.7.0 environment: - KAFKA_CFG_NODE_ID=0 - KAFKA_CFG_PROCESS_ROLES=controller,broker - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093 - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9093 - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER - KAFKA_KRAFT_CLUSTER_ID=playedu-kafka-cluster restart: always volumes: - kafka-data:/bitnami/kafka networks: - playedu logging: *default-logging playedu: build: context: . dockerfile: Dockerfile-api args: - ENABLED_MINIO=${ENABLED_MINIO} - ENABLED_SSL=${BUILD_ARGS_ENABLED_SSL} - SSL_WILDCARD=${BUILD_ARGS_SSL_WILDCARD} - DOMAIN_API=${BUILD_ARGS_DOMAIN_API} - DOMAIN_PC=${BUILD_ARGS_DOMAIN_PC} - DOMAIN_H5=${BUILD_ARGS_DOMAIN_H5} - DOMAIN_ADMIN=${BUILD_ARGS_DOMAIN_ADMIN} - DOMAIN_MINIO=${BUILD_ARGS_DOMAIN_MINIO} restart: always environment: - DB_HOST=${DB_HOST} - DB_PORT=${DB_PORT} - DB_USER=${DB_USER} - DB_NAME=${DB_NAME} - DB_PASS=${DB_PASS} - REDIS_HOST=${REDIS_HOST} - REDIS_PASS=${REDIS_PASS} - REDIS_PORT=${REDIS_PORT} - REDIS_DB=${REDIS_DB} - SA_TOKEN_IS_CONCURRENT=${SA_TOKEN_IS_CONCURRENT} - SA_TOKEN_JWT_SECRET_KEY=${PLAYEDU_JWT_KEY} - KAFKA_BOOTSTRAP_SERVERS=${KAFKA_BOOTSTRAP_SERVERS} - PROTECTOR_LICENSE=${PROTECTOR_LICENSE} volumes: - "./data:/playedu-data" ports: - "80:80" - "443:443" - "${PORT_EXTERNAL_API}:9898" - "${PORT_EXTERNAL_PC}:9800" - "${PORT_EXTERNAL_H5}:9801" - "${PORT_EXTERNAL_ADMIN}:9900" - "${PORT_EXTERNAL_MINIO}:9000" networks: - playedu logging: *default-logging document: build: context: . dockerfile: Dockerfile-document restart: always environment: - DB_HOST=${DB_HOST} - DB_PORT=${DB_PORT} - DB_USER=${DB_USER} - DB_NAME=${DB_NAME} - DB_PASS=${DB_PASS} - REDIS_HOST=${REDIS_HOST} - REDIS_PASS=${REDIS_PASS} - REDIS_PORT=${REDIS_PORT} - REDIS_DB=${REDIS_DB} - SA_TOKEN_IS_CONCURRENT=${SA_TOKEN_IS_CONCURRENT} - SA_TOKEN_JWT_SECRET_KEY=${PLAYEDU_JWT_KEY} - KAFKA_BOOTSTRAP_SERVERS=${KAFKA_BOOTSTRAP_SERVERS} - PROTECTOR_LICENSE=${PROTECTOR_LICENSE} networks: - playedu logging: *default-logging