Files
robot/docker-compose.yml
gaoandClaude 9c7dc6250b Initial commit: Robot project setup
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-21 07:24:45 +08:00

302 lines
7.8 KiB
YAML

version: '3.8'
services:
# ========== 数据库服务 ==========
mysql:
image: mysql:8.0
container_name: kangyang-mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: root123456
MYSQL_DATABASE: kangyang_dev
MYSQL_USER: kangyang
MYSQL_PASSWORD: kangyang123
ports:
- "3306:3306"
volumes:
- mysql-data:/var/lib/mysql
- ./scripts/sql/init.sql:/docker-entrypoint-initdb.d/init.sql
networks:
- kangyang-network
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 5
# ========== 缓存服务 ==========
redis:
image: redis:7.0-alpine
container_name: kangyang-redis
restart: always
ports:
- "6379:6379"
volumes:
- redis-data:/data
networks:
- kangyang-network
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
# ========== 消息队列 ==========
zookeeper:
image: confluentinc/cp-zookeeper:7.4.0
container_name: kangyang-zookeeper
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
networks:
- kangyang-network
kafka:
image: confluentinc/cp-kafka:7.4.0
container_name: kangyang-kafka
depends_on:
- zookeeper
ports:
- "9092:9092"
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
networks:
- kangyang-network
# ========== 时序数据库 ==========
influxdb:
image: influxdb:2.7
container_name: kangyang-influxdb
ports:
- "8086:8086"
environment:
DOCKER_INFLUXDB_INIT_MODE: setup
DOCKER_INFLUXDB_INIT_USERNAME: admin
DOCKER_INFLUXDB_INIT_PASSWORD: admin123456
DOCKER_INFLUXDB_INIT_ORG: kangyang
DOCKER_INFLUXDB_INIT_BUCKET: health-metrics
DOCKER_INFLUXDB_INIT_ADMIN_TOKEN: kangyang-super-secret-auth-token
volumes:
- influxdb-data:/var/lib/influxdb2
networks:
- kangyang-network
# ========== 文档数据库 ==========
mongodb:
image: mongo:6.0
container_name: kangyang-mongodb
ports:
- "27017:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: admin123
MONGO_INITDB_DATABASE: kangyang
volumes:
- mongodb-data:/data/db
networks:
- kangyang-network
# ========== 搜索引擎 ==========
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.11.0
container_name: kangyang-elasticsearch
environment:
- discovery.type=single-node
- xpack.security.enabled=false
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ports:
- "9200:9200"
volumes:
- elasticsearch-data:/usr/share/elasticsearch/data
networks:
- kangyang-network
kibana:
image: docker.elastic.co/kibana/kibana:8.11.0
container_name: kangyang-kibana
ports:
- "5601:5601"
environment:
ELASTICSEARCH_HOSTS: http://elasticsearch:9200
depends_on:
- elasticsearch
networks:
- kangyang-network
# ========== 监控服务 ==========
prometheus:
image: prom/prometheus:v2.47.0
container_name: kangyang-prometheus
ports:
- "9090:9090"
volumes:
- ./monitoring/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
- ./monitoring/prometheus/rules:/etc/prometheus/rules
- prometheus-data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/usr/share/prometheus/console_libraries'
- '--web.console.templates=/usr/share/prometheus/consoles'
networks:
- kangyang-network
grafana:
image: grafana/grafana:10.1.0
container_name: kangyang-grafana
ports:
- "3001:3000"
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=admin123
- GF_INSTALL_PLUGINS=redis-app,redis-datasource
volumes:
- ./monitoring/grafana/dashboards:/etc/grafana/provisioning/dashboards
- ./monitoring/grafana/datasources:/etc/grafana/provisioning/datasources
- grafana-data:/var/lib/grafana
depends_on:
- prometheus
networks:
- kangyang-network
# ========== 日志服务 ==========
fluentd:
build: ./infrastructure/docker/fluentd
container_name: kangyang-fluentd
volumes:
- ./logging/fluentd/fluent.conf:/fluentd/etc/fluent.conf
- /var/lib/docker/containers:/var/lib/docker/containers:ro
ports:
- "24224:24224"
- "24224:24224/udp"
networks:
- kangyang-network
# ========== 微服务 ==========
health-monitoring:
build:
context: ./services/health-monitoring
dockerfile: Dockerfile
container_name: kangyang-health-monitoring
ports:
- "8001:8000"
environment:
- DATABASE_URL=mysql://kangyang:kangyang123@mysql:3306/kangyang_dev
- REDIS_URL=redis://redis:6379
- KAFKA_BROKER=kafka:9092
- INFLUXDB_URL=http://influxdb:8086
- INFLUXDB_TOKEN=kangyang-super-secret-auth-token
- LOG_LEVEL=DEBUG
depends_on:
- mysql
- redis
- kafka
- influxdb
networks:
- kangyang-network
volumes:
- ./services/health-monitoring:/app
restart: unless-stopped
companion-service:
build:
context: ./services/companion-service
dockerfile: Dockerfile
container_name: kangyang-companion-service
ports:
- "8002:8000"
environment:
- DATABASE_URL=mysql://kangyang:kangyang123@mysql:3306/kangyang_dev
- REDIS_URL=redis://redis:6379
- KAFKA_BROKER=kafka:9092
- MONGODB_URL=mongodb://admin:admin123@mongodb:27017
- LOG_LEVEL=DEBUG
depends_on:
- mysql
- redis
- kafka
- mongodb
networks:
- kangyang-network
volumes:
- ./services/companion-service:/app
restart: unless-stopped
rehabilitation-service:
build:
context: ./services/rehabilitation-service
dockerfile: Dockerfile
container_name: kangyang-rehabilitation-service
ports:
- "8003:8000"
environment:
- DATABASE_URL=mysql://kangyang:kangyang123@mysql:3306/kangyang_dev
- REDIS_URL=redis://redis:6379
- KAFKA_BROKER=kafka:9092
- LOG_LEVEL=DEBUG
depends_on:
- mysql
- redis
- kafka
networks:
- kangyang-network
volumes:
- ./services/rehabilitation-service:/app
restart: unless-stopped
# ========== API网关 ==========
api-gateway:
image: kong:3.4
container_name: kangyang-api-gateway
ports:
- "8000:8000"
- "8001:8001"
- "8443:8443"
- "8444:8444"
environment:
KONG_DATABASE: "off"
KONG_DECLARATIVE_CONFIG: /kong/declarative/kong.yml
KONG_PROXY_ACCESS_LOG: /dev/stdout
KONG_ADMIN_ACCESS_LOG: /dev/stdout
KONG_PROXY_ERROR_LOG: /dev/stderr
KONG_ADMIN_ERROR_LOG: /dev/stderr
KONG_ADMIN_LISTEN: 0.0.0.0:8001, 0.0.0.0:8444 ssl
volumes:
- ./infrastructure/kong/kong.yml:/kong/declarative/kong.yml:ro
networks:
- kangyang-network
# ========== 前端服务 ==========
web-admin:
build:
context: ./frontend/web-admin
dockerfile: Dockerfile.dev
container_name: kangyang-web-admin
ports:
- "3000:3000"
environment:
- REACT_APP_API_URL=http://localhost:8000
- NODE_ENV=development
volumes:
- ./frontend/web-admin:/app
- /app/node_modules
networks:
- kangyang-network
networks:
kangyang-network:
driver: bridge
volumes:
mysql-data:
redis-data:
mongodb-data:
influxdb-data:
elasticsearch-data:
prometheus-data:
grafana-data: