ai-course/0.yml
2025-11-18 13:32:46 +08:00

140 lines
3.7 KiB
YAML

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